2008-08-19 4 views
2

Je rencontre des problèmes avec le Google Maps API. J'ai un tableau qui contient un objet que j'ai créé pour stocker des points.API Google Maps - Problèmes avec la classe GLatLngBounds

Mon tableau et 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 retourner un objet GLatLngBounds qui est étendu à partir des limites actuelles de la carte pour afficher tous les HeadPoints.

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

qui renvoie ces valeurs pour l'alerte. (En général, plus les Etats-Unis)

"19,64258, NaN"
"52,69636, NaN"
"i = 0"
"19,64258, NaN"
"52,69636, -117,20701"
"i = 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 amène le map.getBoundsZoomLevel (bounds) à renvoyer 0 qui est incorrect. Est-ce que j'utilise GLatLngBounds de manière incorrecte?

Répondre

1

L'exemple 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 SouthWest/NorthEast dans une variable avant de tenter d'obtenir l'individu lng/coordonnées lat. Peut-être qu'il y a quelque chose avec les évaluations "imbriquées" qui causent des problèmes. Avez-vous essayé l'approche granulaire pour voir si vous obtenez les données dont vous avez besoin?

1

J'ai trouvé cet exemple aussi dans mes recherches sur Google et j'ai joué avec. Ce n'était pas le problème.

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

Merci pour l'aide cependant.

+0

Vous devriez accepter votre propre réponse, puisque c'était votre solution –

Questions connexes