Frage

Ich habe einige Probleme damit Google Maps-API.Ich habe ein Array, das ein Objekt enthält, das ich zum Speichern von Punkten erstellt habe.

Mein Array und meine Klasse:

var tPoints = [];    
function tPoint(name) {
        var id = name;
        var points = [];
        var pointsCount = 0;
        ...
        this.getHeadPoint = function() { return points[pointsCount-1]; }
    }

tPoint enthält ein Array von GLatLng Punkte.Ich möchte eine Funktion schreiben, um a zurückzugeben GLatLngBounds Objekt, das von den aktuellen Kartengrenzen aus erweitert wird, um alle HeadPoints anzuzeigen.

Hier ist, was ich bisher habe.

function getBounds() {
    var mBound = map.getBounds();
    for (var i = 0; i < tPoints.length; i++) {
        alert(mBound.getSouthWest().lat() + "," + mBound.getSouthWest().lng());
        alert(mBound.getNorthEast().lat() + "," + mBound.getNorthEast().lng());
            currPoint = trackMarkers[i].getHeadPoint();        
            if (!mBound.containsLatLng(currPoint)) {
                mBound.extend(currPoint);
            }
        }
    return mBound;
}

Dadurch werden diese Werte für die Warnung zurückgegeben.(Im Allgemeinen in den USA)

„19,64258,NaN“
„52,69636,NaN“
„i=0“
„19,64258,NaN“
"52.69636,-117.20701"
„i=1“

Ich weiß nicht, warum ich NaN zurückbekomme.Wenn ich die Grenzen verwende, um eine Zoomstufe zu erhalten, denke ich, dass der NaN-Wert dazu führt, dass „map.getBoundsZoomLevel(bounds)“ 0 zurückgibt, was falsch ist.Benutze ich GLatLngBounds falsch?

War es hilfreich?

Lösung

Das Google Maps-Beispiel verwendet diesen Code ...

var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();

...wobei die Südwest-/Nordostgrenzen in eine Variable eingefügt werden, bevor versucht wird, die einzelnen LNG-/Blattkoordinaten zu ermitteln.Möglicherweise gibt es Probleme mit den „verschachtelten“ Auswertungen.Haben Sie den granularen Ansatz ausprobiert, um zu sehen, ob Sie die benötigten Daten erhalten?

Andere Tipps

Ich habe dieses Beispiel auch über meine Google-Suche gefunden und damit herumgespielt.Das war nicht das Problem.

Ich habe meinen Fehler gefunden.Niemand hätte das Problem lösen können.Es stellte sich heraus, dass ich kurz bevor ich meine Grenzen testete, meine Karte mit schlechten Daten zentriert hatte.Ich habe so etwas gemacht lngSpan = northEast.lng() - southWest.lng(); Allerdings interpretierte JavaScript meine Variable als Zeichenfolge.Also (maxLng-minLng)/2 + minLng gibt so etwas zurück wie "20.456-116.1178" als die lng.Ich habe meine Karte auf zentriert var centerPoint = new GLatLng(setLat, setLng); und danach wird die Karten-API etwas seltsam ;)

Danke aber für die Hilfe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top