Google Maps API 3 - Javascript:如果在功能中创建标记,则不会出现标记

时间:2013-05-24 16:16:21

标签: javascript google-maps google-maps-markers

问题在于:如果我尝试在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。

我应该在初始化函数中创建新标记(然后修改它们)还是我的代码中出现了某种错误?

1 个答案:

答案 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...