问题在于:如果我尝试在initialize()函数中创建标记,一切正常,但如果我尝试在另一个函数中执行,则不会出现标记。
GoogleMap.js
var map;
function initialize() {
var initial_mapcenter = new google.maps.LatLng(45.697068,9.668598);
var map = new google.maps.Map(document.getElementById("map-canvas"),{ zoom: 10, center: initial_mapcenter, mapTypeId: google.maps.MapTypeId.ROADMAP});
var LatLngA1 = new google.maps.LatLng(45.69467,9.603195);
var marker = new google.maps.Marker({
position: LatLngA1,
map: map,
title: "A1"
});
var LatLngB2 = new google.maps.LatLng(45.653408,9.618301);
createMarker(LatLngB2,"B2","Test B2");
}
function createMarker(point,name) {
var marker = new google.maps.Marker({
position: point,
map: map,
title: name
});
}
第一个(A1)出现,第二个(B2)没有。
我想保留createMarker函数,因为我想用它来添加InfoWindows。
我应该在初始化函数中创建新标记(然后修改它们)还是我的代码中出现了某种错误?
答案 0 :(得分:4)
初始化的地图变量是初始化函数的本地变量。
var map = new google.maps.Map(document.getElementById("map-canvas"),{ zoom: 10, center: initial_mapcenter, mapTypeId: google.maps.MapTypeId.ROADMAP});
将该行更改为(删除前面的“var”):
map = new google.maps.Map(document.getElementById("map-canvas"),{ zoom: 10, center: initial_mapcenter, mapTypeId: google.maps.MapTypeId.ROADMAP});
或(另一个选项),将其传递给createMarker调用(并删除全局范围中的定义):
function createMarker(map, point,name) {
var marker = new google.maps.Marker({
position: point,
map: map,
title: name
});
}
并将其称为:
createMarker(map, LatLngB2,"B2");// removed the unused fourth argument...