Ich habe überall in der Dokumentation gesucht, um zu erklären, wie ich nur Marker für einen bestimmten Bereich einer Fusionstabelle anzeigen kann.
Im Moment erscheinen alle Markierungen auf der Karte wie folgt:
Wenn Sie auf einen Bereich der Fusionstabelle / Google Map klicken, bekomme ich wie erwartet den Gebietsnamen in einem Popup, möchte jedoch zunächst keine der Marker anzeigen. Wenn ein Bereich der Fusionstabelle / Map angeklickt wird, möchte ich nur die Marker für diesen bestimmten Bereich anzeigen, nicht die gesamte Map.
So füge ich die Markierungen aus meiner Web-API in die Karte ein:
%Vor% Ich habe in der Dokumentation eine where
-Anweisung gesehen, die den Fusionstabellen hinzugefügt werden kann. Wie so:
Allerdings sind die Daten aus der Web-API nicht in bestimmte Bereiche unterteilt, sondern lediglich eine lange Liste von Breiten- und Längengraden. Wie so:
%Vor%Hat Google etwas mit der Mischung der Geometrie der Fusionstabelle mit Koordinaten zu tun? Eine einfache Möglichkeit, alle Marker für einen bestimmten Bereich anzuzeigen? Oder kann jemand darüber nachdenken, wie das gemacht werden könnte?
Einige zusätzliche Details über das Webapi, falls es benötigt wird:
%Vor%Leider gibt es in FusionTablesLayer keine Funktion containsLocation.
Eine Lösung besteht darin, ein Google Maps-Polygon aus dem FusionTablesLayer zu erstellen, sodass wir containsLocation
verwenden können, um zu bestimmen, ob der Marker zur Karte hinzugefügt werden soll oder nicht.
Zuerst benötigen wir die Koordinaten, um das Polygon zu erstellen. Wir können google.visualization.Query
verwenden, um die Koordinaten des ausgewählten Bereichs aus der Fusionstabelle zu übernehmen:
Dann durchlaufen wir einfach die Berge und prüfen, ob der ausgewählte Bereich den Berg enthält:
%Vor%Hier ist die JSON-Version:
%Vor%Tags und Links asp.net-web-api javascript jquery google-maps asp.net