2017-12-14 13 views
0

ここで言及しているトピックを参照してください - Setting a LongClickListener on a map Marker私は同じ問題を抱えており、これを正しく達成する方法を見つけることができません。マーカOnLongClickListener on map

最初に、私はすべてのマーカーを置くArraylistを作成します。

markerArrayList = new ArrayList<Marker>(); 


    marker1 = mMap.addMarker(new MarkerOptions() 
      .position(new LatLng(51.1117744, 17.0353596)) 
      .title("Giselle French Bakery Cafe") 
      .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))); 
    marker1.setDraggable(false); 
    marker1.setTag(0); 


    marker2 = mMap.addMarker(new MarkerOptions() 
      .position(new LatLng(51.110969, 17.031510)) 
      .title("Second Bakery Cafe") 
      .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))); 
    marker2.setDraggable(false); 
    marker2.setTag(1); 

    markerArrayList.add(marker1); 
    markerArrayList.add(marker2); 

次の私はここのように地図上にLongClickListenerを使用し、クリックされた1つのチェックしてみています、

mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() { 
     @Override 
     public void onMapLongClick(LatLng latLng) { 
      for (Marker marker : markerArrayList) { 
       if (Math.abs(marker.getPosition().latitude - latLng.latitude) < 0.005 
         && Math.abs(marker.getPosition().longitude - latLng.longitude) < 0.005) { 
        onMarkerLongClick(marker); 
        break; 
       } 
      } 
     } 
    }); 

が、問題は関係なく、私は地図上の長いクリックを使用するところということであり、それは常にarraylitから行の最初のものを選ぶ。

この問題を解決する方法を知っている人はいますか?

答えて

0

いくつかの解決策を確認した後、マーカーが本当に近くに設定されている場合、私は最良の答えを見つけました。ここで

は、それは何も変更doesntの適切

mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() { 
     @Override 
     public void onMapLongClick(LatLng latLng) { 
      for (Marker marker : markerArrayList) { 
       if (Math.abs(marker.getPosition().latitude - latLng.latitude) < 0.001 
         && Math.abs(marker.getPosition().longitude - latLng.longitude) < 0.001) { 
        onMarkerLongClick(marker); 
        break; 
       } 
      } 
     } 
    }); 
0

あなたのマーカーは、onMapLongClick(...)にチェックインした差異よりも近くに配置されているため、非常に小さな差異のウィンドウが残ります。 0.005から0.00005に、または最初のマーカーを2番目のマーカーからさらに離してください(LatLng(51.15, 17.00)を確認してください)。

+0

動作するはずのコードの断片です。それはまだ行の最初のマーカーを取った:( – deisy

関連する問題