Question

J'ai quelques problèmes avec le API Google Maps.J'ai un tableau qui contient un objet que j'ai créé pour stocker des points.

Mon tableau et ma classe :

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

tPoint contient un tableau de GlatLng points.Je veux écrire une fonction pour renvoyer un GLatLngBounds objet qui est étendu à partir des limites actuelles de la carte pour afficher tous les HeadPoints.

Voici ce que j'ai jusqu'à présent.

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;
}

Ce qui renvoie ces valeurs pour l'alerte.(Généralement aux États-Unis)

"19.64258,NaN"
"52.69636,NaN"
"je=0"
"19.64258,NaN"
"52.69636,-117.20701"
"je=1"

Je ne sais pas pourquoi je récupère NaN.Lorsque j'utilise les limites pour obtenir un niveau de zoom, je pense que la valeur NaN fait que map.getBoundsZoomLevel(bounds) renvoie 0, ce qui est incorrect.Est-ce que j'utilise GLatLngBounds incorrectement?

Était-ce utile?

La solution

L'exemple de Google Maps utilise ce 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();

... qui met les limites Sud-Ouest/Nord-Est dans une variable avant de tenter d'obtenir les coordonnées individuelles lng/lat.Peut-être qu'il y a quelque chose dans les évaluations « imbriquées » qui pose problème.Avez-vous essayé l'approche granulaire pour voir si vous obtenez les données dont vous avez besoin ?

Autres conseils

J'ai également trouvé cet exemple grâce à mes recherches Google et j'ai joué avec.Ce n'était pas le problème.

J'ai trouvé mon bug.Personne n'aurait pu résoudre le problème.Il s'avère que juste avant de tester mes limites, j'avais centré ma carte avec des données incorrectes.J'ai fait quelque chose comme lngSpan = northEast.lng() - southWest.lng(); cependant JavaScript a interprété ma variable comme une chaîne.Donc (maxLng-minLng)/2 + minLng renvoie quelque chose comme "20.456-116.1178" comme le lng.J'ai centré ma carte sur var centerPoint = new GLatLng(setLat, setLng); et après ça, l'API des cartes devient un peu étrange ;)

Merci pour l'aide en tout cas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top