Google 地图 API - 第二次初始化时地图未显示
Google Maps API - Map not showing on second initialize
我有一个页面设置,需要通过 API 初始化 Google 地图的多个实例。第一次初始化一张地图时一切正常。当您重新单击按钮执行此操作时,地图不会完全显示。
var locations = [
['test1', 45.440188, -75.676309, 1, 'transportation.png'],
['test2', 45.439463, -75.675751, 1, 'medical.png'],
['test3', 45.439792, -75.683544, 1, 'schools.png'],
['test4', 45.439652, -75.676929, 1, 'shopping.png']
];
function initialize_1() {
var mapOptions = {
center: new google.maps.LatLng(45.438612, -75.677561),
zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas_1"), mapOptions);
marker = new google.maps.Marker({
position: new google.maps.LatLng(45.438612, -75.677561),
map: map
});
var marker, i;
var iconBase = 'http://www.elkproperty.com/new/images/icons/';
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
,icon: iconBase + locations[i][4]
});
}
}
我认为问题在于您正在将映射初始化为隐藏层。尝试在 show()
:
之后将调用移至 initialize_1()
onclick="$('#units_1').hide(); $('#unitArrow_1').hide(); $('#amenity_1').show(); $('#amenityArrow_1').show(); initialize_1();"
其他选项是在 div 可见后强制调整事件大小。为此,您可能必须将 map
变量设置为全局变量。
google.maps.event.trigger(map, 'resize');
可能与您的问题无关,但是您每次使用地图显示 div 时是否都必须初始化地图层?也许你可以测试它是否被初始化,例如:
var isInit_1 = false;
function initialize_1() {
if (isInit_1) { return; }
isInit_1 = true;
var mapOptions = {
...
我有一个页面设置,需要通过 API 初始化 Google 地图的多个实例。第一次初始化一张地图时一切正常。当您重新单击按钮执行此操作时,地图不会完全显示。
var locations = [
['test1', 45.440188, -75.676309, 1, 'transportation.png'],
['test2', 45.439463, -75.675751, 1, 'medical.png'],
['test3', 45.439792, -75.683544, 1, 'schools.png'],
['test4', 45.439652, -75.676929, 1, 'shopping.png']
];
function initialize_1() {
var mapOptions = {
center: new google.maps.LatLng(45.438612, -75.677561),
zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas_1"), mapOptions);
marker = new google.maps.Marker({
position: new google.maps.LatLng(45.438612, -75.677561),
map: map
});
var marker, i;
var iconBase = 'http://www.elkproperty.com/new/images/icons/';
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
,icon: iconBase + locations[i][4]
});
}
}
我认为问题在于您正在将映射初始化为隐藏层。尝试在 show()
:
initialize_1()
onclick="$('#units_1').hide(); $('#unitArrow_1').hide(); $('#amenity_1').show(); $('#amenityArrow_1').show(); initialize_1();"
其他选项是在 div 可见后强制调整事件大小。为此,您可能必须将 map
变量设置为全局变量。
google.maps.event.trigger(map, 'resize');
可能与您的问题无关,但是您每次使用地图显示 div 时是否都必须初始化地图层?也许你可以测试它是否被初始化,例如:
var isInit_1 = false;
function initialize_1() {
if (isInit_1) { return; }
isInit_1 = true;
var mapOptions = {
...