Heatmap auf Basis der durchschnittlichen gewichten und nicht an der Anzahl der Daten-Punkte
Ich mache eine heatmap mit der Google API v3. Ich gebe Ihnen ein Beispiel. Wir betrachten Erdbeben-Magnituden. Ich zuweisen von gewichten zu jedem Punkt angeben, in welchem Ausmaß. Aber google hält die Dichte der Punkte, wenn Sie zu verkleinern. Je mehr Punkte in einem Ort, der röter wird es. Zum Beispiel, wenn zwei earthqueaks geschah innerhalb von Meilen von einander, einer mit Stärke 3 und einem anderen mit Stärke 8, die erste sollte sein, die grün/blau und die 2. wäre rot. Aber sobald Sie verkleinern und die zwei Punkte näher in die Karte, google-maps-Ansicht die Anzahl der Punkte statt der GEWICHTE und als Ergebnis erscheint, Lesen. Ich will, dass es die Durchschnittliche d.h. (3+8)/2=5.5...was auch immer die Farbe, die es repräsentiert. Ist das möglich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie es durch überlagerung einer heatmap Bild auf der Oberseite der Karte. Es ist ein sehr guter open-source-Beispiel in https://github.com/jeffkaufman/apartment_prices
Es ist eine etwas anständige Problemumgehung, wenn Sie wie ich sind und haben nicht die Zeit für die Verarbeitung oder die Leistung zu erzeugen, ein overlay und Sie können nicht ändern vorhandene Bibliotheken nach Ihren wünschen.
Ich benutzte die google maps heatmap-Bibliothek und legen Sie maxIntensity und verschwinden auf false. Einstellung der maxIntensity zu einem Wert Ihrer Wahl lösen das problem der heatmap-Punkte zu bekommen, erscheinen in Bezug auf einander, statt auf 0 oder einen Wert festlegen. Einstellung abzuleiten, false deaktiviert die automatische radius-Einstellungen passieren, dass beim ändern der zoom-Stufen.
Nächsten machte ich ein Ereignis für jedes mal, wenn die zoom-Stufe geändert, und in diesem Fall habe ich den radius auf einen Wert, der schien zu repräsentieren meine Daten die Genaueste Methode für die zoom-Ebene.
Nun, um loszuwerden, das problem, wenn die Datenpunkte auf der Karte-Mischung und bekommen Hinzugefügt, zusammen in einen großen roten Fleck habe ich beschlossen, einen separaten raster auf meiner Karte für jede Zoomstufe die ich verwenden möchten. Ich Durchschnitt alle Werte, die geschachtelt werden, innerhalb der gleichen rasterpunkt, und stellen Sie sicher, dass das Gitter groß genug zu halten heatmap Punkte von überlappenden, aber klein genug, um nicht auszusehen wie eine Ansammlung von Kreisen. (Ich fand, dass das Gitter sollte etwa 0,4-fachen der Größe des heatpoint radius auf der Karte für glatt aussieht).
Den radius der heatmap Punkt ist festgelegt durch google in Pixel. Ich wusste nicht, wie zu konvertieren Pixel zu Lat/Long, also ich habe gerade gemessen es durch zeichnen von Linien, vorbei an einem Kreis mit einem bestimmten radius gemessen und der Abstand zwischen diesen Linien. Das conversion-Methode funktioniert ziemlich gut, wenn Sie nicht planen, auf-mapping viel mehr als ein kleines Land.
Leistung Weise ist dies nicht so schlimm, wie ich dachte, es wäre. Ich bin laden über 2300 Punkte und die Karte lädt so schnell wie es Tat, bevor ich aus einem raster für jede zoom-Stufe, und Sie nicht wirklich sehen die Datenpunkte aktualisiert beim ändern der zoom-Stufen.
Hier sind einige code-Stücken, die für alle der oben genannten:
Map Einstellungen:
Raster-und radius pro zoom-level:
Mein raster generiert werden, die in PHP, die sich wahrscheinlich für jeden anders, aber nur als Beispiel, hier ist die Funktion die ich benutze:
Leider kann ich nicht zeigen Sie die Karte jetzt, wie es ist derzeit privat gehalten für Kunden der Firma, wo ich arbeite, aber wenn es verfügbar ist, öffentlich werde ich einen link hinzufügen, so dass Sie sehen können, wie gut diese Methode funktioniert.
Hoffe, das jemand hilft.
Lukas
Einer heatmap per definition ist der Auffassung Punktdichte sowie die Gewichtung der einzelnen Punkte. Zumindest die Google-heat-map auf diese Weise funktionieren, soweit ich weiß aus der Arbeit mit Ihnen.
Also, was Sie eigentlich brauchen, ist nicht eine heatmap aber eine Karte der Punkte, die Sie gefärbt werden, je nach Wert.
Außerdem musste ich ändern, das Verhältnis Dichte/Gewicht, dass Google heatmaps berücksichtigen, um die Farbe der Karte, aber ich fand keine Möglichkeit.
Derzeit ist die heatmap der wichtigste Faktor ist die Dichte und eine änderung im Gewicht hat Sie kleinen Effekt auf die Farbe.
Als eine Teillösung, die ich modifiziert habe heatmap.js aus dem Projekt:
https://github.com/pa7/heatmap.js
Um einen Durchschnitt an einem einzigen long/lat Punkt habe ich geändert, die _organiseData-Funktion zum speichern der PointCount und PointSum für jede x,y-position; und mit diesen Werten bekomme ich den Durchschnitt an einem Punkt mit:
store[x][y] = storePointSum[x][y] /storePointCount[x][y];
Ich bin immer noch dabei, wie Sie die "Mischung", wenn mehrere x -, y-coords-stack in verschiedenen Auflösungen anzeigen... Wenn ich es herausfinden, werde ich es posten.
cheers
~Aaron
In diesem Beispiel verwendet heatmaps als Ebene über die Karte, hoffe es hilft : http://maps.forum.nu/v3/gm_customTiles.html