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

时间:2016-12-06 02:40:51

标签: android position mapbox tracking marker

问题在于:

我希望在用户按下infoWindow中的按钮后向用户显示到达标记的最佳路径。问题是,由于 Latlng Position 类的某些问题,我无法获取标记的位置数据。 (我使用Mapbox示例来获取路径,因此我需要两个Position值)

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

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();
                            }
                        }
                    });
                }
            });
    //...

}

2 个答案:

答案 0 :(得分:0)

创建位置调用fromCoordinates()

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

答案 1 :(得分:0)

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

mapboxMap.removeAnnotations();

..或者你可以打电话"删除()"来自MapBox本身的任何注释(多边形,折线或标记)

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

如果它仍然存在,你只想改变&更新注释,调用" updatePolygon()"," updateMarker"或" updatePolyline()如下:

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