以下告诉我GMap2未定义。但是使用GMap2的代码在回调中。
$(function() {
$('#sample').click(function() {
$.getScript("http://maps.google.com/maps?file=api&v=2&sensor=true&key=API_KEY_HERE", function() {
var map = new GMap2(document.getElementById("mapTest"));
map.setCenter(new GLatLng(18, -77.4), 13);
map.setUIToDefault();
});
});
});
<a id="sample">Click Me</a>
<div id="mapTest" style="width: 200px; height: 100px;"></div>
答案 0 :(得分:4)
你可以用两种方式:
<强> 1。继续使用$.getScript
:
您似乎需要一个async=2
参数以及一个不同的回调结构才能工作。我的答案适用于此great walkthrough here的代码。
<script type="text/javascript">
function map_callback(){
var map = new GMap2(document.getElementById("mapTest"));
map.setCenter(new GLatLng(18, -77.4), 13);
map.setUIToDefault();
}
$(function(){
$('#sample').click(function(){
$.getScript("http://maps.google.com/maps?file=api&v=2&sensor=true&callback=map_callback&async=2&key=API_KEY_HERE");
}
}
</script>
<强> 2。使用Google AJAX Loader
由于您已经在使用Google图书馆,为什么use their loader无法帮助您:
<script type="text/javascript" src="http://www.google.com/jsapi?key=ABCDEFG"></script>
<script type="text/javascript">
google.load("jquery", "1.3.2");
google.setOnLoadCallback(function(){
$('#sample').click(function(){
google.load("maps", "2", {"callback" : function(){
var map = new GMap2(document.getElementById("mapTest"));
map.setCenter(new GLatLng(18, -77.4), 13);
map.setUIToDefault();
} });
}
}, true); // Passing true, though undocumented, is supposed to work like jQuery DOM ready
</script>
答案 1 :(得分:1)
您是否检查过浏览器是否兼容?我在所有GMAP应用程序中都这样做,尽管它很少失败......
if (GBrowserIsCompatible())