我有一个应用程序,用户可以在其中选择位置。 map 首先以 GPS 位置为中心,但用户也可以拖动标记或在搜索栏中输入内容。这些都有效,但我发现一个奇怪的问题,即标记没有立即更新。
正在更新,仅落后一步...
这是我的 onMarkerDragEnd 代码:
@Override
public void onMarkerDragEnd(Marker marker) {
//mLocMarker = marker; // this has no effect
mLocMarker.setIcon(BitmapDescriptorFactory.defaultMarker());
mLocMarker.showInfoWindow();
LatLng mPos = mLocMarker.getPosition();
LatLng[] coordinates = new LatLng[kmlCoordinates.size()];
coordinates = kmlCoordinates.toArray(coordinates);
if (BorderPatrol.PointIsInRegion(mPos, coordinates)) {
try {
mAddress = getNearestStreetAddress(mPos);
markerTitle = mAddress.getAddressLine(0);
Log.d(TAG, "DRAG: Valid Address is " + mAddress.getAddressLine(0));
isValidAddress = true;
} catch (IOException e) {
e.printStackTrace();
}
}
else {
markerTitle = "Out of Delivery Zone";
markerSnippet = "Hold and drag to change location";
Log.d(TAG, "Out of Delivery Zone: " + mPos);
isValidAddress = false;
}
mLocMarker.setTitle(markerTitle);
mLocMarker.setSnippet(markerSnippet);
float mZoom = map.getCameraPosition().zoom;
CameraUpdate mLoc = CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder().target(mPos).zoom(mZoom).build());
map.moveCamera(mLoc);
}
因此,mLocMarker 是我尝试在此处更新的单个全局标记变量。
边境巡逻方法中的日志每次都会触发 - 它返回一个地址并记录它。然而,标题和 fragment 并没有更新,或者说,它们总是落后于一个事件。
我完全被难住了!
最佳答案
解决了...
我并不是每次都调用 mLocMarker.showInfoWindow()
- 我认为我不必这样做,因为这是一个全局变量,我在设置时调用它,但这就是问题所在!
关于Android 谷歌地图标记未立即更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35860858/