上次我们一起完成了helloMap这个最基本的地图,这次我们来体验下不同视觉地图的魅力
mapview.getMap();然后我们来看一下里面的方法
void |
addHeatMap(HeatMap heatmap)
添加热力图
|
Overlay |
addOverlay(OverlayOptions options)
向地图添加一个 Overlay
|
void |
animateMapStatus(MapStatusUpdate update)
以动画方式更新地图状态,动画耗时 300 ms
|
void |
animateMapStatus(MapStatusUpdate update,
int durationMs)
以动画方式更新地图状态
|
void |
clear()
清空地图所有的 Overlay 覆盖物以及 InfoWindow
|
MyLocationConfiguration |
getLocationConfigeration()
获取定位图层配置信息
|
MyLocationData |
getLocationData()
获取定位数据
|
MapStatus |
getMapStatus()
获取地图的当前状态
|
int |
getMapType()
获取地图当前的模式,普通地图或者卫星图
|
float |
getMaxZoomLevel()
获取地图最大缩放级别
|
float |
getMinZoomLevel()
获取地图最小缩放级别
|
Projection |
getProjection()
获取地图投影坐标转换器, 当地图初始化完成之前返回 null,在 OnMapLoadedCallback.onMapLoaded() 之后才能正常
|
UiSettings |
getUiSettings()
获取地图ui控制器
|
void |
hideInfoWindow()
隐藏当前 InfoWindow
|
boolean |
isBaiduHeatMapEnabled()
获取是否打开百度热力图层(百度自有数据图层)
|
boolean |
isBuildingsEnabled()
获取是否允许楼块效果
|
boolean |
isMyLocationEnabled()
获取是否允许定位图层
|
boolean |
isSupportBaiduHeatMap()
查询当前图区是否支持百度热力图
|
boolean |
isTrafficEnabled()
获取是否打开交通图层
|
void |
removeMarkerClickListener(BaiduMap.OnMarkerClickListener listener)
移除一个地图 Marker 覆盖物点击事件监听者
|
void |
setBaiduHeatMapEnabled(boolean enabled)
设置是否打开百度热力图图层(百度自有数据图层) 注:地图层级大于11时,可显示热力图
|
void |
setBuildingsEnabled(boolean enabled)
设置是否允许楼块效果
|
void |
setMapStatus(MapStatusUpdate update)
改变地图状态
|
void |
setMapType(int type)
设置地图类型
MAP_TYPE_NORMAL 普通图; MAP_TYPE_SATELLITE 卫星图 |
void |
setMaxAndMinZoomLevel(float max,
float min)
设置地图最大以及最小缩放级别,地图支持的最大最小级别分别为[3-20]
|
void |
setMyLocationConfigeration(MyLocationConfiguration configeration)
设置定位图层配置信息,只有先允许定位图层后设置定位图层配置信息才会生效,参见 setMyLocationEnabled(boolean)
|
void |
setMyLocationData(MyLocationData data)
设置定位数据, 只有先允许定位图层后设置数据才会生效,参见 setMyLocationEnabled(boolean)
|
void |
setMyLocationEnabled(boolean enabled)
设置是否允许定位图层
|
void |
setOnMapClickListener(BaiduMap.OnMapClickListener listener)
设置地图单击事件监听者
|
void |
setOnMapDoubleClickListener(BaiduMap.OnMapDoubleClickListener listener)
设置地图双击事件监听者
|
void |
setOnMapDrawFrameCallback(BaiduMap.OnMapDrawFrameCallback callback)
设置百度地图在每一帧绘制时的回调接口,该接口在绘制线程中调用
|
void |
setOnMapLoadedCallback(BaiduMap.OnMapLoadedCallback callback)
设置地图加载完成回调
|
void |
setOnMapLongClickListener(BaiduMap.OnMapLongClickListener listener)
设置地图长按事件监听者
|
void |
setOnMapStatusChangeListener(BaiduMap.OnMapStatusChangeListener listener)
设置地图状态监听者
|
void |
setOnMapTouchListener(BaiduMap.OnMapTouchListener listener)
设置触摸地图事件监听者
|
void |
setOnMarkerClickListener(BaiduMap.OnMarkerClickListener listener)
设置地图 Marker 覆盖物点击事件监听者,自3.4.0版本起可设置多个监听对象,停止监听时调用removeMarkerClickListener移除监听对象 开发者注意根据OnMarkerClickListener的参数Marker来判断响应某个对象的点击事件
|
void |
setOnMarkerDragListener(BaiduMap.OnMarkerDragListener listener)
设置 Marker 拖拽事件监听者
|
void |
setOnMyLocationClickListener(BaiduMap.OnMyLocationClickListener listener)
设置定位图标点击事件监听者
|
void |
setTrafficEnabled(boolean enabled)
设置是否打开交通图层
|
void |
showInfoWindow(InfoWindow infoWindow)
显示 InfoWindow
|
void |
snapshot(BaiduMap.SnapshotReadyCallback callback)
发起截图请求
|
void |
snapshotScope(Rect rect, BaiduMap.SnapshotReadyCallback callback)
发起区域截图请求 注: Rect为null,截全屏
|
package com.flyou.hellomap; import android.app.Activity; import android.os.Bundle; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.MapView; public class TrafficMapActivity extends Activity { MapView mMapView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 在使用SDK各组件之前初始化context信息,传入ApplicationContext // 注意该方法要再setContentView方法之前实现 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); // 获取地图控件引用 mMapView = (MapView) findViewById(R.id.bmapView); // 设置开启交通图 mMapView.getMap().setTrafficEnabled(true); } @Override protected void onDestroy() { super.onDestroy(); // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mMapView.onDestroy(); } @Override protected void onResume() { super.onResume(); // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 mMapView.onPause(); } }图中绿色的路段为畅通路段,红色的呵呵……
package com.flyou.hellomap; import android.app.Activity; import android.os.Bundle; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.MapView; public class HeatMapActivity extends Activity { MapView mMapView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 在使用SDK各组件之前初始化context信息,传入ApplicationContext // 注意该方法要再setContentView方法之前实现 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); // 获取地图控件引用 mMapView = (MapView) findViewById(R.id.bmapView); mMapView.getMap().setBaiduHeatMapEnabled(true); } @Override protected void onDestroy() { super.onDestroy(); // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mMapView.onDestroy(); } @Override protected void onResume() { super.onResume(); // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 mMapView.onPause(); } }
package com.flyou.hellomap; import android.app.Activity; import android.os.Bundle; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.BitmapDescriptor; import com.baidu.mapapi.map.BitmapDescriptorFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MarkerOptions; import com.baidu.mapapi.map.OverlayOptions; import com.baidu.mapapi.model.LatLng; public class OverlayMapActivity extends Activity { MapView mMapView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 在使用SDK各组件之前初始化context信息,传入ApplicationContext // 注意该方法要再setContentView方法之前实现 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); // 获取地图控件引用 mMapView = (MapView) findViewById(R.id.bmapView); // 获得map的管理对象 BaiduMap map = mMapView.getMap(); // 定义坐标点 LatLng point = new LatLng(39.963175, 116.400244); // 构建mark图标 BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.icon_marka); // 构建markeroption,用于在地图上添加marker OverlayOptions options = new MarkerOptions().icon(bitmap).title("河南大学").position(point); map.addOverlay(options); } @Override protected void onDestroy() { super.onDestroy(); // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mMapView.onDestroy(); } @Override protected void onResume() { super.onResume(); // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 mMapView.onPause(); } }
//定义多边形的五个顶点 LatLng pt1 = new LatLng(39.93923, 116.357428); LatLng pt2 = new LatLng(39.91923, 116.327428); LatLng pt3 = new LatLng(39.89923, 116.347428); LatLng pt4 = new LatLng(39.89923, 116.367428); LatLng pt5 = new LatLng(39.91923, 116.387428); List<LatLng> pts = new ArrayList<LatLng>(); pts.add(pt1); pts.add(pt2); pts.add(pt3); pts.add(pt4); pts.add(pt5); //构建用户绘制多边形的Option对象 OverlayOptions polygonOption = new PolygonOptions() .points(pts) .stroke(new Stroke(5, 0xAA00FF00)) .fillColor(0xAAFFFF00); //在地图上添加多边形Option,用于显示 map.addOverlay(polygonOption);
//定义文字所显示的坐标点 LatLng llText = new LatLng(39.86923, 116.397428); //构建文字Option对象,用于在地图上添加文字 OverlayOptions textOption = new TextOptions() .bgColor(0xAAFFFF00) .fontSize(24) .fontColor(0xFFFF00FF) .text("flyou") .rotate(-30) .position(llText); //在地图上添加该文字对象并显示 map.addOverlay(textOption);
/创建InfoWindow展示的view Button button = new Button(getApplicationContext()); button.setBackgroundResource(R.drawable.button_down); //定义用于显示该InfoWindow的坐标点 LatLng pt = new LatLng(39.86923, 116.397428); //创建InfoWindow , 传入 view, 地理坐标, y 轴偏移量 InfoWindow mInfoWindow = new InfoWindow(button, pt, -47); //显示InfoWindow map.showInfoWindow(mInfoWindow);
原文:http://blog.csdn.net/u013616976/article/details/45441971