2016-12-06 4 views
0

Вот в чем проблема:Как получить позицию от маркеров для отслеживания? (Android Mapbox)

Я хочу показать пользователю лучший маршрут для достижения маркера после того, как пользователь нажмет кнопку внутри infoWindow. Проблема в том, что я не могу получить данные о местоположении маркера из-за какой-либо проблемы с Latlng и Позиция классов. (Я использую пример MapBox получить маршрут, так что мне нужно два значения Position)

Поэтому в основном, мне нужно обновить переменную назначения с позицией маркеров, нажав кнопку внутри пользовательского InfoWindow. Тем не менее, я понятия не имею, как я могу это сделать, несмотря на то, что много разбираюсь в поиске Google и 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(); 
          } 
         } 
        }); 
       } 
      }); 
    //... 

}

ответ

0

Для создания позиции вызова fromCoordinates().

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

Спасибо, я был достаточно близко, но это сработало! Могу ли я попросить предложение? Мне нужно удалить маркер перед добавлением этого нового маркера, я знаю, что могу использовать mapboxMap.removeMarker (маркер), но мне нужно инициализировать переменную Position перед тем, как делать такую ​​вещь, знаете ли вы хорошее предложение о значении, которое я мог бы инициализировать переменная? Благодаря! –

+0

Я не уверен, понимаю ли я этот вопрос, но вы можете попробовать проверить, является ли маркер нулевым, а если нет, то вы знаете, что он находится на карте и может быть удален. – cammace

+0

Прошу прощения за путаницу, но я имею в виду, что мне нужен метод очистки маршрута и маркеров, которые показывались, например, с использованием метода mapboxMap.clear(), но только удаление найденного маршрута и новых маркеров, которые были добавлено. В противном случае, каждый раз, когда я нажимаю на эту кнопку, он добавит новый маркер и новый маршрут, но он не удалит предыдущий, знаете ли вы метод, который очищает такую ​​вещь? Еще раз спасибо Cammace! Я твой должник! –

0

Если вы хотите удалить все аннотации на карте, вы можете назвать "removeAnnotations()" на вашем MapBoxMap-Instance:

mapboxMap.removeAnnotations(); 

..or можно назвать "удалить()" на любой аннотацию из самого MapBox (Polygon, полилинии или Marker)

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

Если он еще существует, и вы просто хотите изменить & обновление аннотацию, называют «updatePolygon()», «updateMarker» или «вверх datePolyline() вот так:

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

Хм, идеи довольно хорошие, но у меня есть некоторые проблемы при этом. Мне нужно удалить предыдущие маркеры, созданные при нажатии на указанную кнопку. Поскольку каждый раз, когда я нажимаю на новую кнопку, она создает еще один набор маркеров, а также полилинию через карту, но предыдущая все еще отображается. Но проблема в том, что я не могу делать 'marker.remove();' поскольку он не отображается для меня. Я мог бы попробовать «mapboxMap.removeMarker (marker)», но я не могу этого сделать, потому что он не позволяет MarkerOptions. Не могли бы вы мне помочь? Благодаря! –