Finden Sie die Koordinaten des Mittelpunktes des Polygons im JavaScript
Habe ich einen "Ort" Objekt von Google Maps, die einen Satz von Koordinaten, die eine bounding box für einen bestimmten Ort, sagen wir London. Jeder Satz von Koordinaten hat einen Breitengrad und einen Längengrad.
Habe ich geschrieben, die folgenden code zu finden, der Mittelpunkt, aber ich bin nicht sicher, ob es tatsächlich produzieren den Mittelpunkt. Was ist, wenn das polygon hat 5 Punkte statt 4? Auch, kann dies in effizienter Weise, mit weniger Operationen?
function average(array) {
//Add together and then divide by the length
return _.reduce(array, function (sum, num) {
return sum + num;
}, 0) / array.length;
}
//I have a two-dimensional array that I want to get the average of
var coords = [
[ -1.2, 5.1 ],
[ -1.3, 5.2 ],
[ -1.8, 5.9 ],
[ -1.9, 5.8 ]
]
//So I get the first column
var lats = coords.map(function (coord) {
return coord[0];
})
//Then the second
var longs = coords.map(function (coord) {
return coord[1];
})
//And average each column out
console.log([average(lats), average(longs)])
- Verwenden Sie die Google Maps Javascript API v3?
- Ja, @geocodezip.
- Ich würde vorschlagen, immer die Grenzen des Polygons, dann mit der Mitte der Grenzen.
- Das ist, was ich habe, glaube ich? Die "bounding box".
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten sich die Schwerpunkt der Bereich jeder polygon
Auf jsfiddle
Dadurch wird der Mittelpunkt in jeder Form als array [centerX, centerY]:
Einen anderen Weg:
Alternativ, wenn Ihr browser unterstützt ECMAScript 6 ist, dann können Sie Pfeil-Funktionen und Verbreiten syntax wie folgt:
jsfiddle
Um die Grenzen eines Polygons (mit Ihren Daten) in der Google Maps API v3 (nicht getestet):
jb
undkb
. Ich brauche nur einen lat/long.Ich weiß, das ist nicht genau das, was du suchst, aber falls sonst niemand Antworten kann es eine Hilfe sein. Dies ist eine PHP-Funktion, die ich verwenden, um zu finden, die den Mittelpunkt der Polygone für meine map-Anwendung. Es sollte Recht einfach in javascript für Ihren Einsatz.
Beachten Sie, dass das polygon muss geschlossen sein, d.h. die erste Stelle im array und der Letzte Punkt in dem array sind die gleichen.
Die Funktion konvertiert die Koordinaten-string auf das notwendige array:
Einer Probe des rohen koordinieren string:
Hier ist mein es6-Lösung durchschnittlich ein array von breiten-und Längengrade.
Durchschnitt ist nicht der genaue Mittelpunkt, aber es bekommt den job zu erledigen in meinem Fall.