百度地图------百度infowindow重影问题记录我的

来源:互联网 发布:条码追溯软件 编辑:程序博客网 时间:2024/05/01 01:15

录这个问题,百度地图infowindow有两种构造方法,一种经过百度处理,传入的是图片,不能响应点击事件,另一种传入自己写的view,可以响应点击事件等,效果大致相同,但是我使用这种方法记的时候:

InfoWindow(View view, LatLng position, int yOffset)

会出现重影的现象,效果如下图:



在网上很多人遇到了这个问题,我咨询,都没有回复,帖子里面也没有解决方法,只能自己再看百度API;

我发现有个mapview.removeView()方法,当使用这个方法: infoWindow = new InfoWindow(baidumap_infowindow, latLng, -47);
       baiduMap.showInfoWindow(infoWindow);
mapView.removeView((baidumap_infowindow);之后,重影消失,但是,点击事件也没了,所以我觉得问题应该出在这里;查看API;

还有一个相对的mapview.addView();这个方法可以传入你自己写的view,也就是之前传入infowindow构造时的方法,那么问题简单了很多;我们可以实现类似infowindow的show()和hide()方法,addView(),removeView();也就意味着我们丢掉infowindow的方法,自己写一个view加上去。

但是如何实现显示在marker的位置,并且不随地图的移动,这里有一个mapView的方法:

就是这个方法,mapView.addView(View,LayoutParams);可以实现显示view的位置;接下来看LayoutParams;同样是在百度API里面:



返回MapViewLayoutParams.Builder的com.baidu.mapapi.map中的方法 限定符和类型方法和说明MapViewLayoutParams.BuilderMapViewLayoutParams.Builder.align(int alignX, int alignY)

指定 MapViewLayoutParams 的对齐方式,默认水平居中,垂直下对齐
MapViewLayoutParams.BuilderMapViewLayoutParams.Builder.height(int height)
指定 MapViewLayoutParams 的高度
MapViewLayoutParams.BuilderMapViewLayoutParams.Builder.layoutMode(MapViewLayoutParams.ELayoutMode mode)
指定 MapViewLayoutParams 的方式:屏幕坐标或者地图经纬度坐标
MapViewLayoutParams.BuilderMapViewLayoutParams.Builder.point(Point p)
指定 MapViewLayoutParams 的屏幕坐标
MapViewLayoutParams.BuilderMapViewLayoutParams.Builder.position(LatLng position)
指定 MapViewLayoutParams 的经纬度坐标
MapViewLayoutParams.BuilderMapViewLayoutParams.Builder.width(int width)
指定 MapViewLayoutParams 的宽度



可以指定显示位置的方法,很强大;那么我们可以使用经纬度的方法;

LayoutParams params = new MapViewLayoutParams.Builder()
                .layoutMode(MapViewLayoutParams.ELayoutMode.mapMode)// 按照经纬度设置位置
                .position(LatLng)
                .width(MapViewLayoutParams.WRAP_CONTENT)
                .height(MapViewLayoutParams.WRAP_CONTENT)
                .yOffset(-37)
                .build();

也就是这样了,最后一步:

mapView.addView(baidumap_infowindow, params);

大功告成;当然记住在点击的事件里面,先removeView,再addView;

记录自己遇到的一个问题,希望能帮助到和我一样遇到同样问题的开发大兄弟。



阅读全文
0 0