添加一虚烂配个marker的示例代码如下:差指
OverlayOptions oo=new MarkerOptions().icon(xx).position(xx)
mBaiduMap.addOverlay(oo)
一、下载最新百度地图sdk,导入工程中
二、根据官方文档初始化地图,在main.xml中添加对应布局
<com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
//获取地图控件引用
mapView = (MapView) findViewById(R.id.bmapView)
baiduMap = mapView.getMap()// 获取地图控制器
p// 第一步,创建地理编码检索实例;mSearch = GeoCoder.newInstance()// 第二步,创建地理编码检索监听者;
OnGetGeoCoderResultListener listener = new OnGetGeoCoderResultListener() { public void onGetGeoCodeResult(GeoCodeResult result) { 橘慎 if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) { 圆芹敬//没有检索到结果
}else { //获取地理编码结果
float latitude = (float) result.getLocation().latitude float longitude = (float) result.getLocation().longitude 首谨 final LatLng point = new LatLng(latitude, longitude) //加载自定义marker
View popMarker = View.inflate(MainActivity.this, R.layout.pop, null)
Bitmap bitmap1 = getViewBitmap(popMarker)
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(bitmap1) //构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions()
.position(point)
.icon(bitmapDescriptor) //在地图上添加Marker,并显示
Marker marker = (Marker) baiduMap.addOverlay(option)
}
} @Override
public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) { if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) { //没有找到检索结果
} //获取反向地理编码结果
}
}// 第三步,设置地理编码检索监听者;
mSearch.setOnGetGeoCodeResultListener(listener)// 第四步,发起地理编码检索;
mSearch.geocode(new GeoCodeOption()
.city("北京")
.address("海淀区上地十街10号"))//百度地图上少一个括号 将View转换成Bitmap的方法/**
* 将View转换成Bitmap
* @param addViewContent
* @return
*/private Bitmap getViewBitmap(View addViewContent) {
addViewContent.setDrawingCacheEnabled(true)
addViewContent.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED))
addViewContent.layout(0, 0,
addViewContent.getMeasuredWidth(),
addViewContent.getMeasuredHeight())
addViewContent.buildDrawingCache()
Bitmap cacheBitmap = addViewContent.getDrawingCache()
Bitmap bitmap = Bitmap.createBitmap(cacheBitmap) return bitmap
}
Marker的自定义布局pop.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical" >
<ImageView
android:id="@+id/iv_title"
android:layout_width="42dp"
android:layout_height="42dp"
/>
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="42dp"
android:padding="5dp"
android:gravity="center"
android:text="标题"
android:textSize="16dp" /></LinearLayout>
地图在移动的时候 每一帧都会镇唯重新绘制这个marker 所以看起来有模伍一些抖动 这个地方我们后续会不断优化目前还是建议你要是比较在乎效御码培率的话 不要用这么多的marker 在地图上 比较好一点
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)