0

私はGoogleマップにマーカーのセットを表示しています。同じマーカーをもう一度クリックすると、「既にクリックされた」のようなメッセージが表示されるはずです。どうすればいいの?助けて 。おかげで状態を維持するためにアンドロイドのgoogle map v2でマーカを1回だけクリック可能にする

public void getData() { 
    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(DATA_URL, 
      new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray response) { 
        parseData(response); 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 


       } 
      }); 

    //Creating request queue 
    RequestQueue requestQueue = Volley.newRequestQueue(this); 

    //Adding request to the queue 
    requestQueue.add(jsonArrayRequest); 
} 
private void parseData(JSONArray array) { 


    for (int i = 0; i < array.length(); i++) { 
     JSONObject json = null; 
     try { 
      json = array.getJSONObject(i); 


      place1 = json.getString("place"); 


      Lat1 = json.getString("latitude"); 


      Long1 = json.getString("longitude"); 
      sensor = json.getString("sensor1"); 
      bin_capacity = json.getString("capacity"); 






      if (Integer.parseInt(sensor) >= 0 && Integer.parseInt(sensor) <= 60) { 
       LatLng latLng = new LatLng(Double.parseDouble(Lat1), Double.parseDouble(Long1)); 
       arrayLatlong.add(latLng); 


       for (int j = 0; j < arrayLatlong.size(); j++) { 
        arrayPlace.add(place1); 
        bin.add(bin_capacity); 


        myMarker= map.addMarker(new MarkerOptions().position(latLng).title(bin_capacity)); 
        arrayMarker.add(myMarker); 




        map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
                @Override 
                public boolean onMarkerClick(Marker marker) { 


                 for (int k = 0; k < arrayMarker.size(); k++) { 

                  if (marker.equals(arrayMarker.get(k))) { 

                    counter++; 
                    capacity.setText("Capacity = "+counter); 



                   } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 


    } 
} 

答えて

1

使用ブール:

boolean isMarkerClicked = false; 

および更新はonclicklistener

map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
                @Override 
                public boolean onMarkerClick(Marker marker) { 
      if(!isMarkerClicked){ 
       isMarkerClicked = true; 
      //put your rest of code that will work on marker click 
      }else{ 
      //show here toast message 
      } 


} 
}); 
0

でマーカーをクリックリスナーでこの

でこのコード

を試してみてください

//マーカーのタイトルとメッセージは、あなたが何ができるかこの場合

googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
     @Override 
     public void onInfoWindowClick(Marker marker) { 

      if (marker.getTitle().equals("Your Location")) { 

      } else { 
       Toast.makeText(MapActivity.this, map.get("" + marker_list.indexOf(marker.getTitle())).get("stylistUserId"), Toast.LENGTH_SHORT).show(); 


      } 
     } 
    }); 
0

このコードを使用クリッカブルTemporary ArrayList() or HashMap()を作成することです。 はイエスtoastを示し、ない場合temp listにマーカーを追加する場合は、あなたのonMarkerClick()メソッドチェックインサイド

は、私たちのtemp listは、マーカーが含まれている場合。これで

map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
    @Override 
    public boolean onMarkerClick(Marker marker) { 


    for (int k = 0; k < arrayMarker.size(); k++) { 

     if (marker.equals(arrayMarker.get(k))) { 

     counter++; 
     capacity.setText("Capacity = " + counter); 



     } 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 


    } 
} 

0

folowingコードを置き換え

map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
    @Override 
    public boolean onMarkerClick(Marker marker) { 

    if (arrayMarker.contains(marker)) { 
     //show here toast message 
    } else { 
     arrayMarker.add(marker); 
     //put your rest of code that will work on marker click 
    } 
    } 
    } 
関連する問題