6

Google Maps Utility Library v3'u kullanarak bir Google haritasındaki kümeleme belirteçlerinin temel bir uygulamasını deniyorum. Ben bu olsa çalıştırdığınızdaNesne, Google harita işaretleyicileri (api v3) kümelendiğinde 'getPosition' yöntemine sahip değil.

, ben Chrome Geliştirici Araçları konsolda bir hata alıyorum: http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js:

Uncaught TypeError: Object #<Object> has no method 'getPosition' 

Bu burada araç kütüphanesi komut 649 hat ile ilgilidir. Aşağıdakilerden hangisi fonksiyonudur:

/** 
* Determins if a marker is contained in a bounds. 
* 
* @param {google.maps.Marker} marker The marker to check. 
* @param {google.maps.LatLngBounds} bounds The bounds to check against. 
* @return {boolean} True if the marker is in the bounds. 
* @private 
*/ 
MarkerClusterer.prototype.isMarkerInBounds_ = function(marker, bounds) { 
    return bounds.contains(marker.getPosition()); 
}; 

kullanıyorum kodu makul standart Google haritaları şeyler, ana işlevi olan: Ben kadar geriye erroring fonksiyonunu takip ettik

function initialize(items,loop,zoom) { 
    geocoder = new google.maps.Geocoder(); 
    if (items.length > 0) { 
    var latlng = new google.maps.LatLng(items[0].Lat, items[0].Lng); 
    var myOptions = { 
     zoom: zoom, 
     center: latlng, 
     //mapTypeControl: false, 
     streetViewControl: false, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 

    map = new google.maps.Map(document.getElementById("map"), myOptions); 
    map.setOptions({styles: stylez}); 

    for (var i = 0; i < items.length; i++) { 
     var marker = new google.maps.Marker({ 
     position: new google.maps.LatLng(items[i].Lat, items[i].Lng), 
     title: items[i].Title, 
     icon: _iconCenter, 
     shadow: shadow, 
     infocontent: items[i].Description 
     }); 
     marker.setMap(map); 
     markersArray.push(marker); 
    } 
    var markerCluster = new MarkerClusterer(map, items); 
    google.maps.event.addListener(map, "tilesloaded", function() { 
     if(loop == true){ 
     SetLoop(); 
     } 
    }); 
    } 
} 

Anladığım kadarıyla, sadece standart davranışlar olan sınırları belirleyebilmek için haritanın kenarları için koordinatlar almalı, ancak bir şey doğru değil.

Bu konuda herhangi bir ışık tutabilir miydi acaba?

herhangi işaretçiler millet için teşekkürler ...

cevap

4

konu google senaryoyu eşler önce markerclusterer senaryoyu bildirerek olduğu gerçeği ortaya çıktı. Haritalar komut dosyasını ilk önce çözdüm ... şimdi bariz!

+3

Bu konuda size yardımcı olacak herhangi bir kişi için yayınınızda yeterli bilgi yoktu. – geocodezip

+2

Geçmişte haklısınız, ama bunun bir sorun olduğunu anlayamadım - meselenin benim fonksiyonumla veya küme kütüphanesiyle olduğunu sanıyordum. – Dan

+0

Kaynak siparişin kaynak olduğundan şüphe duyuyorum. Marker'dan daha önce aldığım markerCluster.js dosyası, [docs] (https://developers.google.com/maps/documentation/javascript/marker adresinde belirtildiği gibi) -şekil) ve her şey iyi çalışıyor. Muhtemelen farklı bir sorun vardı. – stephenmurdoch

4

MarkerClusterer belirteçlerin bir dizi bekliyor. Bir tane oluşturun, ancak öğeler dizisini yapıcısına iletin. Değişim:

var markerCluster = new MarkerClusterer(map, items); 

için:

var markerCluster = new MarkerClusterer(map, markersArray); 
+0

Teşekkürler - bu bir soruna neden olmuş olabilir, bu yüzden bunu işaretlediğiniz için teşekkürler. Bunu değiştirmek, orijinal hatayı etkilemedi, yine de işlevdeki 'markersArray' kullanıldığında bile oldu. Özgün soruna çözüm buldum ve asıl gönderiye bir cevap ekledim. Yardımınız için tekrar teşekkürler - bu muhtemelen bir sonraki sorunum olurdu;) – Dan

İlgili konular