您现在的位置:
概述
四维地图导航应用产品开发SDK【Navinfo Navigation SDK for Android】是一套基于Android 2.3版本及以上操作系统的地图导航客户端应用产品开发工具包。用户可以轻松构造地图导航基础上的各种交互式应用产品。四维地图导航应用产品开发SDK提供了3D地图显示与操作、位置信息搜索、导航算路、导航过程管理等基本功能,可以结合MPS(GPS、基站、WIFI混合定位)接口实现地图定位等功能,满足不同用户各种应用需求。
功能介绍与体验
-
地图展示
(完整代码详见相关资源下载中示例工程的 MapViewActivity.java) // 自定义地图视图 private DemoMapView mDemoMapView; // 地图渲染控制类 private MapRenderer mRenderer; /** * 显示地图, */ @Override protected void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mapview); // 初始化地图 initMap(); } /** * 初始化地图 */ private void initMap () { try { // 加载地图 mDemoMapView = (DemoMapView) findViewById(R.id.glView_mapview); mDemoMapView.setHandler(handler); } catch (Exception e) { e.printStackTrace(); new MessageBox(this, false).showDialog(e.getMessage()); } } /* * 自定义地图视图,所有与地图相关操作均可自定义实现 */ public class DemoMapView extends MapView { // 初始化放大图绘制使用的view // 开始模拟导航 // 结束模拟导航 // 绘制放大图 // 绘制指定Maneuver的箭头 // 绘制摄像头 // 绘制出多条路线 // 绘制单条路线 // 设置路线是否开启Tmc模式 // 将路线显示在地图上 // 设置目的地 // 开始算路 // 控制是否锁车 // 获取车当前的位置 // 设置当前车的角度,用于导航时更新车的角度 // 在地图指定位置显示一个POI的信息 // 将指定的路线隐藏 // 删除所有路线 // 地图放大操作 // 地图缩小操作 // …… }
-
覆盖物
(完整代码详见相关资源下载中示例工程的 OverlayActivity.java) // 打点 Point point = new Point(11638780, 3998076); // 创建点对象 CircleOverlay circle = new CircleOverlay(point, 0f); // 创建以point对象为中心的一个点 mRenderer.addOverlay(circle);//将点绘制在地图上 // 气泡 Vector2D pivot = new Vector2D(0.5f, 0.0f); // 设置气泡在点上的偏移量 Annotation an = new Annotation(1, point, 1101, pivot); // 在点point上创建一个偏移量为pivot的气泡 CalloutStyle calloutStyle = an.getCalloutStyle(); // 获取气泡样式 calloutStyle.leftIcon = 0; // 气泡左侧的图标为空 calloutStyle.rightIcon = 0; // 气泡右侧的图标为空 an.setCalloutStyle(calloutStyle); // 为气泡设置显示样式 an.setTitle("自定义POI点"); // 为气泡设置显示标题内容 mRenderer.addAnnotation(an); // 在地图上添加气泡 an.showCallout(true); // 设置气泡可显示
-
POI搜索
(完整代码详见相关资源下载中示例工程的 NewSearchActivity.java) /** * 初始化需要使用的引擎 这里主要使用了POI搜索引擎和绘图引擎 */ private void init () { …… // 初始化POI搜索引擎 mPoiSearch = new PoiSearch(); // 设置搜索模式: // onlineOnly在线搜索 offlineOnly离线搜索 mPoiSearch.setDataPreference(DataPreference.onlineOnly); // 设置搜索城市id mPoiSearch.setCity(cityName); // 设置搜索中心点 mPoiSearch.setCenter(mCenter); // 注册搜索监听回调方法 // 地图上打点 private void drawAnnotation() { mAnnotations.clear(); Vector2DF vec = new Vector2DF(0.9f, 0.5f); Point point = new Point(); int zlevel = 100; Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.gas); for (int i = 0; i < mPoiItems.size(); i++) { point.x = mPoiItems.get(i).position.x; point.y = mPoiItems.get(i).position.y; CustomAnnotation annot = new CustomAnnotation(zlevel, point, i, vec, icon); annot.setTitle(mPoiItems.get(i).name); mAnnotations.add(annot); } for (int i = 0; i < mAnnotations.size(); i++) { mDemoMapView.getMapRenderer().addAnnotation(mAnnotations.get(i)); } if (mPoiItems.size() > 0) { // 移动地图中心 mDemoMapView.setWorldCenter(mPoiItems.get(0).position); } } //删除地图上打的点 private void clearAnnotation() { for (int i = 0; i < mAnnotations.size(); i++) { mDemoMapView.getMapRenderer().removeAnnotation(mAnnotations.get(i)); } }
-
离线数据
// 初始化数据,添加数据加载回调 OfflineDataStoreManager.getInstance().initData(this); // 数据加载回调 @Override public void onDataSuccess(DatastoreItem[] datastoreItems) { // 数据加载成功 progressBar.setVisibility(View.GONE); this.datastoreItems = datastoreItems; if (datastoreItems != null) { // 设置listView数据源 DownloadAdapter downloadAdapter = new DownloadAdapter(this, datastoreItems); mListView.setAdapter(downloadAdapter); } } @Override public void onDataFailure() { //数据加载失败 progressBar.setVisibility(View.GONE); Toast.makeText(this, "refresh faile", Toast.LENGTH_SHORT).show(); } @Override public void onDataCancle() { // 数据加载取消 progressBar.setVisibility(View.GONE); Toast.makeText(this, "refresh cancel", Toast.LENGTH_SHORT).show(); }