2017-05-17 7 views
1

Bitte schauen Sie auf meine Code Schicht aus GeoJSON Zeichenfolge zu erstellen und fügen Schicht zuzuordnen:Android Google Maps GeoJsonLayer OnFeatureClickListener, mehrere Schichten

private GeoJsonLayer createLayerFromGeojson(String json) 
    { 
     JSONObject ob = null; 

     try 
     { 
      ob = new JSONObject(json); 
     } 
     catch (JSONException e) 
     { 
      e.printStackTrace(); 
     } 

     GeoJsonLayer layer = new GeoJsonLayer(googleMap, ob); 
     layer.addLayerToMap(); 

     layer.setOnFeatureClickListener(feature -> Utils.showMessage(getActivity(), "Clicked", feature.getProperty("description").toString())); 

     return layer; 
    } 

Next 2 Ebenen hinzufügen zur Karte:

String json = /*first geojson string here*/ 
String json2 = /*another geojson string here*/ 

createLayerFromGeojson(json); 
createLayerFromGeojson(json2); 

Problem : Wenn ich auf Marker oder Pologon klicke, wird immer die Beschreibung aus dem zweiten json (json2) angezeigt, auch wenn ich auf das Objekt klicke, das vom ersten json auf der ersten Ebene erstellt wurde.

Was ist los? Irgendwelche Ideen?

Antwort

2

Wenn Sie in der Dokumentation für die Methode setOnFeatureClickListener heißt es:

Legt einen einzigen Klick-Listener für das gesamte Objekt GoogleMap, die mit dem entsprechenden Feature-Objekt aufgerufen wird, wenn ein Objekt auf der Karte (Polygon, Marker, Polylinie) wird geklickt.

Für mich scheint es albern, dass wir nicht mehrere Schichten mit Informationen aus verschiedenen GeoJson haben können. Es muss ein MultiPolygon, MultiLineString oder MultiPoint sein.

Referenz: https://github.com/googlemaps/android-maps-utils/blob/master/library/src/com/google/maps/android/data/Layer.java#L89

+0

Ja, es dargestellt hat es schon aus. Es ist mir schließlich gelungen, alle meine Objekte zu einer einzelnen Ebene hinzuzufügen, und meine Karte enthält nur eine einzelne Ebene. – user1209216

+1

Wie verwalten Sie den Klick für einzelne Funktionen mit nur einem GeoJson? Ich habe Probleme bei der Überlappung von Features. –

+2

Kurz gesagt, es ist mir gelungen, alle Features aus allen Geojons, die ich habe, zu extrahieren. Fügen Sie dann alle extrahierten Features zu einer einzelnen Ebene in meiner Map hinzu und legen Sie für jedes Feature einen Klick-Listener fest – user1209216