ClusterMarkerer - кластер не появляется - this.map_.mapTypes [this.map_.getMapTypeId ()] является неопределенным markerclusterer.js: 304 - PullRequest
2 голосов
/ 20 сентября 2011

У меня проблема с моим MarkerClusterer.

Когда у меня было 400 маркеров, появляется кластер, все работает. Но теперь у меня муар, а не 600 маркеров, и кластер не появляется.

Firebug отображает эту ошибку:

that.map_.mapTypes[that.map_.getMapTypeId()] is undefined  markerclusterer.js:304

У вас есть идея?

Спасибо

Ответы [ 8 ]

3 голосов
/ 21 сентября 2011

Обновите свой markercluster.js до последней версии: http://google -maps-utility-library-v3.googlecode.com / svn / trunk / markerclusterer / src / markerclusterer.js

и ваша проблема будет решена!

2 голосов
/ 20 сентября 2011

лучшее решение - перейти на api 3.5 в ожидании исправления от Google.
<script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3.5&sensor=true"></script>

1 голос
/ 20 сентября 2011

Похоже, что Google изменил что-то в API.Вы можете вручную установить значение maxZoom в настройках вашего кластера или в настройках карты на что-то вроде 16, затем оно снова заработает.Если у вас есть другие слои, такие как Bing oder OSM, вы также должны установить их значения maxZoom.

var clusterOptions = { styles: ClusterStyles, maxZoom: 16 };
markerClusterer = new MarkerClusterer(map, markersArray, clusterOptions);
0 голосов
/ 21 сентября 2011

Я исправил это так же, но немного по-другому .. Лучший способ обновить ваш код ... этот код увеличивает свойство обратно туда, где оно ожидается.

    var that = this;
    google.maps.event.addListener(this.map_, 'zoom_changed', function() {
        try{
           var maxZoom = that.map_.mapTypes[that.map_.getMapTypeId()].maxZoom;
        } catch(Error){ maxZoom = that.map_.mapTypes[that.map_.getMapTypeId()].maxZoom = 20; }
        var zoom = that.map_.getZoom();
        if (zoom < 0 || zoom > maxZoom) return;     

        if (that.prevZoom_ != zoom) {
           that.prevZoom_ = that.map_.getZoom();
           that.resetViewport();
        }
});
0 голосов
/ 20 сентября 2011

То же сообщение об ошибке после "щелчка" в кластере.

Решение:

  • использовать конкретную версию карт Google, а не самую последнюю (например, http://maps.google.com/maps/api/js?v=3.5&sensor=true)

  • изменить маркер кластеризатора js - установить фиксированный maxZoom

0 голосов
/ 20 сентября 2011

В markerclusterer.js в строке 156 измените код с

var maxZoom = that.map_.mapTypes[that.map_.getMapTypeId()].maxZoom;

на var maxZoom = 18;

0 голосов
/ 20 сентября 2011

Да, я тоже проснулся разбитым.

Комментарии здесь сработали, я добавил maxZoom: 18 к моей инициализации.

     footer_map = new google.maps.Map(document.getElementById('footer_map'), {
      zoom: 1,
      center: new google.maps.LatLng(42, 0),
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      zoomOnClick: true,
      maxZoom: 18
    });
0 голосов
/ 20 сентября 2011

Я думаю, что API карты изменены, а массив mapsTypes не имеет свойства maxZoom

...