我的地图标记有问题。第一次加载地图时,一切正常。然而,当div被隐藏并重新显示(并调用相同的函数map())时,地图加载正常,但标记不会出现,即使地图居中在我真正所在的位置。Google地图标记消失
这里是图编码的一个片段:
function map(){
var latlng = new google.maps.LatLng(38.54, 15.35);
infowindow = new google.maps.InfoWindow();
var mapOptions = {
zoom: 5,
center: latlng,
panControl: false,
mapTypeControl: false,
scaleControl: false,
streetViewControl: false,
overviewMapControl: false
};
map = new google.maps.Map(document.getElementById("map"), mapOptions);
switch (map_view_id) {
case "1" : map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
break;
case "2" : map.setMapTypeId(google.maps.MapTypeId.SATELLITE);
break;
case "3" : map.setMapTypeId(google.maps.MapTypeId.HYBRID);
break;
}
google.maps.event.addListenerOnce(map, 'tilesloaded', function(){
updateMap();
});
}
function updateMap() {
map.setCenter(new google.maps.LatLng(latitude, longitude));
map.setZoom(13);
marker = new google.maps.MarkerImage("/android_asset/www//graphics/car.png",
new google.maps.Size(96.0, 96.0),
new google.maps.Point(0, 0),
new google.maps.Point(48.0, 48.0)
);
markerShadow = new google.maps.MarkerImage("/android_asset/www/graphics/car_shadow.png",
new google.maps.Size(145.0, 96.0),
new google.maps.Point(0, 0),
new google.maps.Point(48.0, 48.0)
);
point = new google.maps.LatLng(latitude,longitude);
if(!markerUserPosition){
// Create marker
markerUserPosition = new google.maps.Marker({
position: point,
map: map,
icon: marker,
shadow: markerShadow,
draggable:false,
animation: google.maps.Animation.DROP
});
} else {
// Move marker
markerUserPosition.setPosition(point);
}
}
UPDATE: 有没有办法彻底摧毁一个谷歌地图?因为隐藏我可以在技术上彻底销毁地图并在需要时加载它。
地图你在** **显示功能再次调用updateMap()? –
@ sk8terboi87不,我只是在调用map()。当tile被加载时,updateMap()是否会自动调用?或者我错了? – user1809790
是的,它会自动加载瓷砖时,但是,为隐藏/显示,我认为你是jquery/js做到这一点,对不对?所以瓷砖加载不会被触发,这是我的猜测。 –