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     }
复制代码

 

posted @   晕菜一员  阅读(1424)  评论(1编辑  收藏  举报
点击右上角即可分享
微信分享提示