在第一个onLocationChanged
事件allback上,我将带有当前位置的Marker添加到我的地图中,该方法返回Marker
个实例。我将该实例保存到变量中,但是当我点击标记的InfoWindow时,传递给我的标记是另一个对象,因此if(savedMarker != marker)
始终为真。
相关的实际代码:
onLocationChanged:
@Override
public void onLocationChanged(Location location) {
if(mMyPos == null) {
mMyPos = mMap.addMarker(new MarkerOptions().position(new LatLng(location.getLatitude(), location.getLongitude()))
.title("MyPos")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(locationToLatLng(location), 15));
}
mMyPos.setPosition(new LatLng(location.getLatitude(), location.getLongitude()));
}
onInfoWindowClick:
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
if(marker != mMyPos) {
doSomething();
}
}
});
}
如果我将条件更改为if(!marker.getTitle().equals(mMyPos.getTitle()))
它有效,但我真的不喜欢这样。有什么想法吗?