2017-08-24 88 views
0

这是情况。我使用Google Play位置服务和MapBox API地图。当我启动的应用程序,我立即在地图上显示当前用户位置:两个标记 - MapBox上的当前位置和目标Android

private void add() { 
    currentMarker = new MarkerOptions() 
      .position(currentLatLng); 

    mMapBoxMap.addMarker(currentMarker); 
} 

和更新的位置改变我的标记位置:

private void update() { 
    moveCamera(); 
    mMapBoxMap.clear();//Clear map so no multiple current location markers 
    currentMarker = new MarkerOptions() 
      .position(currentLatLng); 

    mMapBoxMap.addMarker(currentMarker); 
} 

然后,当显示当前位置,我允许用户点击地图上,并设置了目的地(他目前的位置为原点):

mMapBoxMap.setOnMapClickListener(new MapboxMap.OnMapClickListener() { 
       @Override 
       public void onMapClick(@NonNull LatLng point) { 
        MarkerOptions markerOptions = new MarkerOptions().position(point); 


        mapboxMap.addMarker(markerOptions); 
        destinationLat = point.getLatitude(); 
        destinationLng = point.getLongitude(); 


       } 
      }); 

当我点击地图上的,它会清除所有的标记,并在CURREN提出一个新的目标标记,后来t位置标记出现。

我的问题:

  1. 如何在地图上添加目的地标记,以便在当前位置标记仍然会更新并不会消失,每次我点击地图上的? 例如 - 我的地图(现在有两个标记)上添加一个目的地标记,如果我将10米我的当前位置标记移动,但目标标记保持

回答

2

您需要使用标记的参考和使用removeMarker()只能删除某些标记。因此,有一个变量:

Marker myDestinationMarker = mapboxMap.addMarker(markerOptions); 

,然后右上它使用:

if (myDestinationMarker != null) { 
    mapboxMap.removeMarker(myDestinationMarker); 
} 

注意两件事情,你可以用,而不是添加/删除标记,并用于显示用户所在位置,我们提供的LocationLayer Plugin

+0

非常感谢!肯定会考虑一下。另外还有一个问题 - – Power3000

+0

还有一个问题: 我是否应该以同样的方式处理我的当前位置? 比方说,我把我的目的地标记和我目前的位置改变了一小部分。我不想在地图上丢失目标标记,我只想更新我的位置 – Power3000