Android Google 地图标记未立即更新
Android Google Maps Marker not updating immediately
我有一个应用程序,用户可以在其中 select 一个位置。地图首先以他们的 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 是我要在此处更新的单个全局标记变量。
边界巡逻方法中的日志每次都会触发 - 它 returns 一个地址并记录它。然而,标题和片段没有更新——或者,它们总是落后一个事件。
我完全被难住了!
解决了...
我并不是每次都调用 mLocMarker.showInfoWindow()
- 我认为我不必调用,因为这是一个全局变量,我在设置时调用它,但这就是问题所在!
我有一个应用程序,用户可以在其中 select 一个位置。地图首先以他们的 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 是我要在此处更新的单个全局标记变量。
边界巡逻方法中的日志每次都会触发 - 它 returns 一个地址并记录它。然而,标题和片段没有更新——或者,它们总是落后一个事件。
我完全被难住了!
解决了...
我并不是每次都调用 mLocMarker.showInfoWindow()
- 我认为我不必调用,因为这是一个全局变量,我在设置时调用它,但这就是问题所在!