在使用百度地圖InfoWindow 時重新給控制元件賦值後其實是重新在原來的檢視上增加了一個檢視而不是在原來的檢視上修改的所以會出現重疊的情況,而且滑動和縮放地圖是修改的會失效變回預設的檢視
這是原先的程式碼:
View infoWindowView = LayoutInflater.from(this).inflate(R.layout.dialog_mark_pin, mMapView, false);
mMTvTime = infoWindowView.findViewById(R.id.tv_time);
mTv = infoWindowView.findViewById(R.id.tv);
InfoWindow mInfoWindow = new InfoWindow(infoWindowView, mStartLatLng, -100);
mBaiDuMap.showInfoWindow(mInfoWindow);
//這樣賦值就會在預設的檢視上再增加一層檢視
mTv.setText("aaaa");
複製程式碼
這個時候我們可以用mapView的 removeView()方法來避免 但是使用了這個方法後就不能修改檢視了
mMapView.removeView(infoWindowView);//是mapView不是BaiduMap(寫在XML裡那個)
複製程式碼
所以我使用了另外一個方法 這個就是直接向MapView新增View 使用這個的時候 在改變值時是在原來的檢視上改的 而不是重新新增一個新的檢視覆蓋在原來的檢視上。
ViewGroup.LayoutParams params = new MapViewLayoutParams.Builder()
.layoutMode(MapViewLayoutParams.ELayoutMode.mapMode)
.position(mStartLatLng)
.width(MapViewLayoutParams.WRAP_CONTENT)
.height(MapViewLayoutParams.WRAP_CONTENT)
.yOffset(-100)
.build();
mMapView.addView(infoWindowView, params);
複製程式碼
參考了這篇部落格