У меня есть флажок, в котором пользователь может выбрать несколько маршрутов, после чего от сервера возвращается ответ. У меня есть метод gotoLocation, чтобы убрать местоположение маркеров, чтобы добавить новый маркер на карте, когда новый вставлен в таблицу на сервере с тем же маршрутом.Преобразовать строку в маркер в Google Map, чтобы удалить старый маркер на карте
У меня была проблема с добавлением нового маркера на карту, поэтому, когда я вставил данные для нового маркера с тем же выбранным маршрутом в моей таблице базы данных, новый вставленный не был добавлен на карту. Я сохранил идентификатор и маркер в HashMap, прежде чем решить эту проблему, сохранив данные маркера как String
в HashMap, в этом случае новые вставленные данные добавляются к карте в качестве маркера.
Сейчас в Update block
Мне нужно преобразовать эти данные latit,longit, rout_dirc
в маркер, чтобы удалить старый с карты и HashMap перед обновлением его местоположения. Как я могу это сделать в моем случае? Как я могу удалить старый маркер с карты, так как у меня нет маркера в HashMap, теперь я тоже не могу использовать marker.remove()
, чтобы удалить старый?
Я признателен за любую помощь
Код:
public class Map extends FragmentActivity {
GoogleMap map;
static HashMap<Integer, String> markerMap = new HashMap<Integer, String>();
static String marker_string;
static Marker marker = null;
private void gotoLocation(int id, double lat, double lng,
String route_direct) {
final float zoom = 11;
LatLng ll = null;
if (markerMap.containsKey(id)) {
// Update the location.
marker_string = markerMap.get(id);
String[] marker_string_split = marker_string.split(",");
double latit = Double.parseDouble(marker_string_split[0]);
double longit = Double.parseDouble(marker_string_split[1]);
String rout_dirc = marker_string_split[2];
LatLng LL_2 = new LatLng(lat, lng);
MarkerOptions markerOpt2 = new MarkerOptions().title(route_direct)
.position(LL_2);
// This here doest work.
marker.remove();
// Remove from the HashMap tp add the new one.
markerMap.remove(id);
ll = new LatLng(lat, lng);
MarkerOptions markerOpt = new MarkerOptions().title(route_direct)
.position(ll);
marker = map.addMarker(markerOpt);
String lat1 = Double.toString(lat);
String lng1 = Double.toString(lng);
String data = lat1 + "," + lng1 + "," + route_direct;
markerMap.put(id, data);
zoom();
} else {
// Add a new marker
String lat1 = Double.toString(lat);
String lng1 = Double.toString(lng);
String data = lat1 + "," + lng1 + "," + route_direct;
markerMap.put(id, data);
ll = new LatLng(lat, lng);
MarkerOptions markerOpt = new MarkerOptions().title(route_direct)
.position(ll);
marker = map.addMarker(markerOpt);
zoom();
}
}
}
Я не хочу удалять все маркеры на карте. Я хочу удалить маркер с определенным 'id', чтобы обновить его местоположение. –
У меня есть идея, но я думаю, что это немного глупо. Но вы можете попробовать. Поэтому, если у вас есть идентификатор вашего маркера, удалите lat/lng из HashMap, получив его с данного идентификатора. Добавьте любые новые точки lat/lng, которые вам нужны, а затем нажмите новый набор точек lat/lng на карту, выполнив петлю карты. Затем все ваши маркеры все еще существуют, кроме тех, которые были удалены. –
Я не пробовал ваше решение для решения комментариев, но я получил его для работы с 'HashMap' sine. Одна из моих проблем заключалась в том, что идентификатор таблицы был увеличен на единицу при обновлении записи, и я исхожу из предположения, что это тот же самый идентификатор. Спасибо за поддержку. –