2008-08-19 38 views
2

Google Maps API ile ilgili bir sorun yaşıyorum. Noktaları saklamak için yarattığım bir ojbect'i içeren bir dizim var.Google Maps API - Sınıfındaki Sorunlar

Benim dizi ve sınıf:

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

TPoint GLatLng puan bir dizi tutar. Tüm HeadPoints öğelerini göstermek için geçerli harita sınırlarından uzatılmış bir GLatLngBounds nesnesini döndürmek için bir işlev yazmak istiyorum.

İşte ben bugüne kadar ne var .. uyarı için bu değerleri döndürür

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

.

"19,64258, NaN"
"52,69636, NaN"
"i = 0"
"19,64258, NaN"
"52,69636, -117,20701"
"i = 1" (Genel ABD üzerinde)

Neden NaN geri alıyorum bilmiyorum. Yakınlaştırma düzeyini elde etmek için sınırları kullandığımda, NaN değerinin map.getBoundsZoomLevel (sınırlar) 'ın yanlış olan 0 değerini döndürmesine neden olduğunu düşünüyorum. GLatLngBounds yanlış kullanıyor muyum? Bireysel Ing/lat koordinatları almak çalışmadan önce bir değişkene SouthWest/NorthEast sınırları koyuyor google haritalar örnek bu kodu kullanan

cevap

1

...

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

.... Belki de "iç içe" değerlendirmelerle sorunlara neden olan bir şey vardır. İhtiyacınız olan verileri alıp alamayacağınızı görmek için taneli yaklaşımı denediniz mi?

1

Bu örneği Google aramalarımda da buldum ve onunla oynadım. Sorun bu değildi.

Hatamı buldum. Kimse sorunu çözemezdi. Sınırlarımı test etmeden önce, haritayı kötü verilerle merkezlemiştim. Ben lngSpan = northEast.lng() - southWest.lng(); gibi bir şey yaptım, ancak JavaScript benim varisimi bir dize olarak yorumladı. Bu nedenle (maxLng-minLng)/2 + minLng, "20.456-116.1178" gibi lng gibi bir şey döndürür. Haritalarım var centerPoint = new GLatLng(setLat, setLng); üzerinde ortaladı ve bundan sonra haritalar API biraz garipleşti;)

Yardımlarınız için teşekkürler.

+0

Kendi cevabınızı kabul etmelisiniz, çünkü çözümünüz buydu –