两个标记 - MapBox Android上的当前位置和目标

时间:2017-08-24 20:27:39

标签: java android mapbox mapbox-marker mapbox-android

情况如下。我使用Google Play位置服务和MapBox API地图。当我启动应用程序时,我会立即在地图上显示当前用户位置:

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();


                }
            });

当我点击地图时,它会删除每个标记并放置一个新的目标标记,稍后会出现在当前位置标记上。

我的问题:

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

1 个答案:

答案 0 :(得分:2)

您需要使用标记的引用,并使用removeMarker()仅删除某些标记。所以有一个变量:

Marker myDestinationMarker = mapboxMap.addMarker(markerOptions);

然后在它正上方使用:

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

请注意两件事,您可以使用setPosition代替添加/删除标记,并显示用户位置,我们提供LocationLayer Plugin