android 百度地图 SupportMapFragment 快速集成。
在android 清单文件中:加入
1 <meta-data 2 android:name="com.baidu.lbsapi.API_KEY" 3 android:value="百度地图key" />
初始化百度地图:Application
1 SDKInitializer.initialize(this);
使用百度地图,快速集成方法,使用SupportMapFragment:
1 com.baidu.mapapi.map.SupportMapFragment
使用其,Activity 需 继承 FragmentActivity。
1 SupportMapFragment myMap; 2 @Override 3 protected void onCreate(Bundle savedInstanceState) { 4 super.onCreate(savedInstanceState); 5 6 setContentView(R.layout.activity_main); 7 8 myMap = SupportMapFragment.newInstance(); 9 FragmentManager manager = getSupportFragmentManager(); 10 FragmentTransaction ft = manager.beginTransaction(); 11 ft.add(R.id.map_frame_layout, myMap, "map_fragment"); 12 ft.commit(); 13 }
获取MapView等:
1 private MapView mMapView; 2 private BaiduMap mBaiduMap; 3 private UiSettings mUiSettings; 4 5 private void initMap() { 6 mMapView = myMap.getMapView(); 7 mBaiduMap = myMap.getBaiduMap(); 8 mUiSettings = myMap.getBaiduMap().getUiSettings(); 9 10 mMapView.showScaleControl(false); 11 mMapView.showZoomControls(false); 12 mUiSettings.setCompassEnabled(false); 13 mUiSettings.setOverlookingGesturesEnabled(false); 14 mBaiduMap.setMyLocationEnabled(true); 15 }
根据经纬度,获取屏幕位置:
1 Point point = mBaiduMap.getProjection().toScreenLocation(new LatLng(mLocationLat, mLocationLng));
根据经纬度,居中,放大显示:
1 MapStatus.Builder builder = new MapStatus.Builder(); 2 builder.target(new LatLng(lat, lng)); 3 builder.zoom(23f); 4 myMap.getBaiduMap().animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
显示marker:
1 // 回收资源 2 private Overlay mOverlay; 3 4 private void addOverlay(StudentInfo student, float lat, float lng) { 5 Bundle b = new Bundle(); 6 b.putSerializable("student", student); 7 LatLng mLatLng = new LatLng(lat, lng); 8 MarkerOptions marker = new MarkerOptions().position(mLatLng).icon(BitmapDescriptorFactory.fromResource(R.drawable.marker)) 9 .zIndex(9).draggable(true).extraInfo(b); // icon 需要回收 10 marker.animateType(MarkerOptions.MarkerAnimateType.grow); 11 if(mOverlay != null) { 12 mOverlay.remove(); 13 mOverlay = null; 14 } 15 mOverlay = mBaiduMap.addOverlay(marker); 16 } 17 18 @Override 19 protected void onDestroy() { 20 if(mOverlay != null) { 21 mOverlay.remove(); 22 mOverlay = null; 23 } 24 }
添加marker 点击事件:
1 //添加marker点击事件的监听 2 mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() { 3 @Override 4 public boolean onMarkerClick(Marker marker) { 5 6 //从marker中获取info信息 7 Bundle bundle = marker.getExtraInfo(); 8 StudentInfo student = (StudentInfo) bundle.getSerializable("student"); 9 10 // TODO 11 12 return true; 13 } 14 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步