2015-07-11 117 views
0

我在谷歌地图上显示巴士的位置,我从服务器上的巴士数据库表中获取位置。我面临的问题是删除或更新他们在谷歌地图上的位置,因为当总线表中的经度和纬度发生变化时,总会创建一个新的标记。如何删除和更新Google地图中的特定标记?更新和删除谷歌地图上的特定标记

我很感激任何帮助。

代码:

private void gotoLocation(double lat, double lng, String route_direct) { 

    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
    final float zoom = 11; 
    LatLng ll = new LatLng(lat, lng); 
    if (lat != 0 && lng != 0 && !route_direct.isEmpty()) { 
     MarkerOptions markerOpt = new MarkerOptions().title(route_direct) 
       .position(ll).visible(true); 

     Marker marker = map.addMarker(markerOpt); 
     marker.showInfoWindow(); 
     CameraUpdate update = CameraUpdateFactory.newLatLngZoom(ll, zoom); 
     map.moveCamera(update); 

    } 

} 
+0

删除标记只需使用marker.setMap(null); –

+0

但是如何与Google地图上的标记进行通信,因为我想删除并更新特定标记? –

+0

我不确定关于android,但在JavaScript中我使用了数组标记并通过索引跟踪每个标记。 –

回答

0

我解决了这个样子。我为标记创建了HashMap。

样品,

HashMap<String, Marker> markerlist = new HashMap<>(); 
markerlist.put(route_direct, yourmarker);//add marker to list 
markerlist.get(route_direct);//get marker from list 

然后在你的更新过程,试试这个代码

if(markerlist.containsKey(route_direct)){ 
     Marker marker = markerlist.get(route_direct); 
     //update marker 
    }else{ 
     //add marker or do anything 
    } 

,但使用这个流程,你需要有诸如标记ID为标记的唯一数据。

希望这会帮助你。祝你好运。

0

为每个标记定义变量,如 标记m1; 标记m2; 等

并使用该变量做特定标记的任何操作。删除特定标记

m1.delete(); m2.delete();

就像这样,你可以尝试让我知道你是否面临任何问题。