7

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

私が理解している限り、エラー関数をさかのぼって追跡しました。境界を決定できるように、マップのエッジの座標を受信して​​いるはずです。これは単なる標準的な動作ですが、明らかに何かが正しくありません。

誰かがこれに光を当てることができるかどうか疑問に思いましたか?

ポインタをありがとう...

4

2 に答える 2

5

問題は、Google マップ スクリプトの前に、markerclusterer スクリプトを宣言していたという事実であることが判明しました。最初にマップスクリプトを呼び出すと解決しました...今では明らかです!

于 2012-08-15T12:21:44.423 に答える
4

MarkerClusterer は、マーカーの配列を想定しています。1 つ作成しますが、items 配列をそのコンストラクターに渡します。変化する:

var markerCluster = new MarkerClusterer(map, items);

に:

var markerCluster = new MarkerClusterer(map, markersArray);
于 2012-08-15T11:57:16.377 に答える