2016-04-30 121 views
-1

我搜索了這個錯誤的網站,雖然有幾個答案,但他們都沒有爲我工作(或不適用)。谷歌地圖OverlappingMarkerSpiderfier實例化問題

我使用谷歌地圖API v3,並試圖實施OverlappingMarkerSpiderfier來解決我的重疊標記問題。我的問題是,我不能創建OMS的一個實例:

function getStateInfo(){ 
     //do stuff 
     var lat = 42.5724; 
     var lon = -74.948052; 
     var map = new google.maps.Map(document.getElementById("map"),{draggableCursor:'pointer'}); 
     var oms = new OverlappingMarkerSpiderfier(map,{markersWontMove: true, markersWontHide: true}); 
     // do more stuff 
     var whiteicon = new GIcon(); 
     whiteicon.image = "images/whiteCircle.png"; 
     whiteicon.iconSize = new GSize(11, 11); 
     whiteicon.iconAnchor = new GPoint(6, 6); 
     whiteicon.infoWindowAnchor = new GPoint(6,6); 

     var marker = new GMarker(new GLatLng(lat,lon), { 
      draggable: false, 
      title: ($(this).find('COMPANY_NAME').text()), 
      icon: whiteicon, 
      map: map 
     }); 
     oms.addMarker(marker); 
    } 

我收到以下錯誤:

InvalidValueError: setMap: not an instance of Map; and not an instance of StreetViewPanorama 

我已經驗證了在實例化時發生錯誤,而不是在標記創建/放置。爲了徹底性,這裏是我想放置標記代碼:

var marker = new GMarker(new GLatLng(lat,long), { 
draggable: false, 
title: ($(this).find('COMPANY_NAME').text()), 
icon: whiteicon, 
map: map}); 

...

oms.addMarker(marker); 

我也檢索OMS的不同副本的情況下,有一些靠不住的與原來的(從github下載)。

如果您需要查看更多的代碼,請讓我知道您在找什麼。我剛剛發佈了這些問題。我的地圖可以在沒有OMS的情況下正確生成 - 這只是oms實例化問題。

+0

請提供[最小,完整,測試和可讀示例](http://stackoverflow.com/help/mcve)演示問題。 – geocodezip

+0

雖然您看到您使用的是Google Maps API v3,但發佈的代碼是Google Maps JavaScript API v2代碼。該版本的API已棄用,不應用於新代碼。這也可以解釋你的問題與spiderifier。 – geocodezip

+0

謝謝!你完全正確。 – dneimeier

回答

1

您正在使用已過時的Google Maps JavaScript API v2地圖及Google Maps JavaScript API v3 spiderifier。

這是v2的代碼(GSizeGPointGLatLng):

whiteicon.iconSize = new GSize(11, 11); 
whiteicon.iconAnchor = new GPoint(6, 6); 

var marker = new GMarker(new GLatLng(lat,lon), {