如何从标记中获取位置以进行跟踪? (Android 地图框)

How to get position from markers for tracking? (Android Mapbox)

这是问题所在:

我想在用户按下信息窗口内的按钮后向用户显示到达标记的最佳路线。问题是,由于 LatlngPosition 类 存在一些问题,我无法获取标记的位置数据。 (我用的是Mapbox的例子来获取路线,所以我需要两个Position值)

所以基本上,我需要通过单击自定义信息窗口内的按钮,用标记的位置更新变量 Destination。然而,即使在搜索 Google 和 Stack Overflow 上经历了很多,我也不知道该怎么做。有人能帮我吗? (卡马克!)非常感谢您的帮助!


protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //...

    // Origem: Rodoviaria
    final Position origin = Position.fromCoordinates(-47.882645, -15.794082);
    // Destino: Reitoria
    final Position destination = Position.fromCoordinates(-47.866611, -15.762604);

    //...

        mapboxMap.setInfoWindowAdapter(new MapboxMap.InfoWindowAdapter() {
                @Nullable
                @Override
                public View getInfoWindow(@NonNull Marker marker) {
                    //...

                    final Marker marcador = marker;

                    botaoIr = (Button)v.findViewById(R.id.botaoIr);
                    botaoIr.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {

                            //I have been trying the method below, but I am having trouble with LatLng and Position classes!
                            //LatLng ponto = marcador.getPosition();
                            //destination = new Position(ponto.getLongitude(),ponto.getLatitude());

                            try {
                                getRoute(origin, destination);
                            } catch (ServicesException servicesException) {
                                servicesException.printStackTrace();
                            }
                        }
                    });
                }
            });
    //...

}

创建职位调用fromCoordinates()

destination = Position.fromCoordinates(ponto.getLongitude(),ponto.getLatitude());

如果您想删除地图上的所有注释,可以在您的 MapBoxMap-Instance 上调用 "removeAnnotations()":

mapboxMap.removeAnnotations();

..或者您可以在 MapBox 本身的任何注释(多边形、折线或标记)上调用 "remove()"

Polygon pol = new Polygon();
pol.remove();

如果它仍然存在,而您只想更改和更新注释,请调用 "updatePolygon()"、"updateMarker" 或“updatePolyline(),如下所示:

mapboxMap.updatePolygon(myPolgonInstance);
mapboxMap.updateMarker(myMarkerInstance);
...