在百度地图上撒大量的点怎么做到

在百度地图上撒大量的点怎么做到,第1张

只能循环一个一个添加,你想批量添加,目前没有这样的api,历侍

添加一虚烂配个marker的示例代码如下:差指

OverlayOptions oo=new MarkerOptions().icon(xx).position(xx)

mBaiduMap.addOverlay(oo)

一、下载最新百度地图sdk,导入工程中

二、根据官方文档初始化地图,在main.xml中添加对应布局

<com.baidu.mapapi.map.MapView

    android: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 在地图上 比较好一点


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11995620.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存