2014-11-01 2 views
1

Я добавил много маркеров в google maps v2 android, я использую хеш-таблицу для хранения идентификатора каждого маркера, и результаты, которые я мог бы сделать customwindow и т. Д., Но проблема в том, что я хочу удалить/переместить маркер на основе на идентификаторе.Как перемещать один маркер в google maps v2 android?

Это мой код, чтобы создать маркер, я анализирую данные из JSON

private Hashtable<String, String> markers; 
markers = new Hashtable<String, String>(); 

private void createMarker(String result) throws JSONException{ 

    jObject = new JSONObject(result); 
    JSONArray menuitemArray = jObject.getJSONArray("data"); 
    for (int i = 0; i < menuitemArray.length(); i++) { 
     id=menuitemArray.getJSONObject(i).getString("id").trim(); 
     ttl=menuitemArray.getJSONObject(i).getString("user").trim(); 
     snip=menuitemArray.getJSONObject(i).getString("desc").trim(); 
     lat=menuitemArray.getJSONObject(i).getString("latitude").trim(); 
     lng=menuitemArray.getJSONObject(i).getString("longitude").trim(); 

     Marker mk = googleMap.addMarker(new MarkerOptions() 
     .position(new LatLng(Double.parseDouble(lat),Double.parseDouble(lng))) 
     .title(ttl) 
     .snippet(snipq) 
     .icon(BitmapDescriptorFactory.fromBitmap(BmFinal))); 

     markers.put(mk.getId(), id); //here i add info to hastable marker 

    } 
} 

Я хочу, чтобы переместить маркер в этой пустоте

private void moveMarker(String Id){ 
    //what should i do in here ??? 
} 

как я достичь этого? спасибо ..

+0

использования, marker.setPosition (LatLng); –

ответ

0

Я не могу комментировать, но вы можете попробовать это; Сначала удалите маркер, а затем создайте другое в новом месте, которое вы хотите, но с теми же характеристиками.
В качестве примера (Точно так же вы получите идею):

public void moveMarker(String Id) {  

    markers.get(Id).remove(); // this removes the marker 

    Marker newMk = googleMap.googleMap.addMarker(new MarkerOptions() 
     .position(new LatLng(Double.parseDouble(newlat),Double.parseDouble(newlng))) // new coordonates 
     .title(ttl) 
     .snippet(snipq) 
     .icon(BitmapDescriptorFactory.fromBitmap(BmFinal))); // same details 

     // now add to your map & collection 
     markers.put(newMk.getId(), Id); 
} 
+0

Я не могу найти remove() в markers.get (id) .remove(), маркеры являются hastable типа .. – ltvie

+0

, что бит кода должен удалить нужный маркер с карты, потому что класс Marker поддерживает метод remove() , ['Marker.remove()'] (http://developer.android.com/reference/com/google/android/gms/maps/model/Marker.html#remove()), но если вы хотите чтобы очистить всю карту и перерисовать ее, используйте: «GoogleMap.clear()», и если вы просто хотите скрыть один маркер для последующего использования, это может помочь: ['Marker.setVisible (boolean)'] (http: // developer.android.com/reference/com/google/android/gms/maps/model/Marker.html#setVisible(boolean)) – Anas

+0

Да, если класс маркера имеет метод удаления, но я хочу удалить маркер, это маркер который имеет указанный id и не удаляется с помощью выбора маркера, поэтому мне сначала нужно было проверить идентификатор, а затем использовать итерацию для остальной части маркера, и если id существует, то я удаляю – ltvie

Смежные вопросы