Google Maps Utility Library v3を使用して、Googleマップ上のクラスタリングマーカーの基本的な実装を試しています。
ただし、これを実行すると、Chromeデベロッパーツールコンソールでエラーが発生します。
Uncaught TypeError: Object #<Object> has no method 'getPosition'
これは、ユーティリティライブラリスクリプトの行649に関連しています:http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js。次の関数はどれですか。
/**
* 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());
};
私が使用しているコードは、かなり標準的なGoogleマップのものであり、その主な機能は次のとおりです。
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();
}
});
}
}
私が理解している限り、エラー関数をさかのぼって追跡しました。境界を決定できるように、マップのエッジの座標を受信しているはずです。これは単なる標準的な動作ですが、明らかに何かが正しくありません。
誰かがこれに光を当てることができるかどうか疑問に思いましたか?
ポインタをありがとう...