我正在将Google Map API与MarkerManager一起使用。我通过JQuery加载2个javascript库。
这是我的Javascript:
function initialize() {
$.getScript('http://gmaps-utility-library.googlecode.com/svn/trunk/markermanager/release/src/markermanager.js');
$.getScript('http://maps.google.com/maps?file=api&v=2&async=2&callback=mapLoaded&sensor=true_or_false&key=ABC');
}
function mapLoaded() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(18, -77.4), 13);
map.setUIToDefault();
var mgr = new MarkerManager(map);
mgr.addMarkers(getWeatherMarkers(), 5); //gets some marker from another function
mgr.refresh();
}
}
我在firebug javascript调试器中遇到的错误是:
未定义GBounds
[此错误中断] GBounds.prototype.containsPoint =函数(点){\ nmarkerma ... 109501758(第377行)
me.getMapGridBounds_不是函数
[突破此错误] me.shownBounds_ = me.getMapGridBounds _(); \ n
标记... 109501758(第106行)
如果我静态加载javascript库,也会发生此错误。
谢谢,
最佳答案
我看到您的代码有两个问题。
首先,您没有使用MarkerManager的最新版本。在这里使用新的:
http://gmaps-utility-library-dev.googlecode.com/svn/tags/markermanager/1.1/src/markermanager.js
其次,MarkerManager库要求首先加载GoogleMaps API。
首先切换顺序(我认为这不起作用):
$.getScript('http://maps.google.com/maps?file=api&v=2&async=2&callback=mapLoaded&sensor=true_or_false&key=ABC');
$.getScript('http://gmaps-utility-library-dev.googlecode.com/svn/tags/markermanager/1.1/src/markermanager.js');
但是更有可能的是,您将需要以下内容:
function initialize() {
$.getScript('http://maps.google.com/maps?file=api&v=2&async=2&callback=mapLoaded&sensor=true_or_false&key=ABC');
}
function mapLoaded() {
$.getScript('http://gmaps-utility-library-dev.googlecode.com/svn/tags/markermanager/1.1/src/markermanager.js', function(){
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(18, -77.4), 13);
map.setUIToDefault();
var mgr = new MarkerManager(map);
mgr.addMarkers(getWeatherMarkers(), 5); //gets some marker from another function
mgr.refresh();
}
});
}