【问题标题】:Two markers - current location and destination on MapBox Android两个标记 - MapBox Android 上的当前位置和目的地
【发布时间】:2018-02-02 20:26:18
【问题描述】:

情况是这样的。我使用 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 米,我当前的位置标记会移动,但目的地标记会保留

【问题讨论】:

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


    【解决方案1】:

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

    Marker myDestinationMarker = mapboxMap.addMarker(markerOptions);
    

    然后在它上面使用:

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

    注意两点,您可以使用setPosition 而不是添加/删除标记,为了显示用户位置,我们提供LocationLayer Plugin

    【讨论】:

    • 非常感谢!肯定会调查一下。还有一个问题-
    • 还有一个问题:我是否也应该以同样的方式处理当前位置?假设我把我的目的地标记和我当前的位置改变了一小部分。我不想在地图上丢失我的目的地标记我只想更新我的位置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    相关资源
    最近更新 更多