2016-12-06 1 views
0

ここに問題があります。問題は、Latlngポジションクラスの問題のため、マーカーの位置データを取得できません。追跡のためにマーカーから位置を取得するには?</p> <p>私は、ユーザーがinfoWindow内のボタンを押した後にマーカーに到達する最善のルートを表示したいと考えています(Android Mapbox)

を(私はルートを取得するためにMapboxの例を使用していますので、私は2つの位置の値を必要とする)ので、基本的に、私は、カスタム情報ウィンドウ内のボタンをクリックすると、マーカーの位置を変数を更新する必要があります。しかし、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

あなたがマップ上のすべての注釈を削除したい場合は、あなたがあなたのMapBoxMap・インスタンスの「removeAnnotationsを()」を呼び出すことができます。

あなたは「)(削除」を呼び出すことができ..or
mapboxMap.removeAnnotations(); 

MapBox自体(ポリゴン、ポリラインまたはマーカー)

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

それはまだ、既存のだとあなただけの&更新注釈を変更したい場合は、から任意の注釈に「updatePolygon()」、「updateMarker」または「呼び出しdatePolyline()は次のようになります:

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

ええ、アイデアはかなり良いですが、私はそうすることにいくつか問題があります。私は、上記のボタンをクリックしたときに作成された以前のマーカーを削除する必要があります。新しいボタンをクリックするたびに、別のマーカセットとポリラインがマップ内に作成されますが、前のマップも表示されます。しかし、問題は、私が 'marker.remove();'を実行することができないということです。私は 'mapboxMap.removeMarker(marker)'を試すことができましたが、MarkerOptionsが許可されていないのでどちらでもできません。手伝ってくれませんか?ありがとう! –

関連する問題