1

我的地图标记有问题。第一次加载地图时,一切正常。然而,当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: 有没有办法彻底摧毁一个谷歌地图?因为隐藏我可以在技术上彻底销毁地图并在需要时加载它。

+0

地图你在** **显示功能再次调用updateMap()? –

+0

@ sk8terboi87不,我只是在调用map()。当tile被加载时,updateMap()是否会自动调用?或者我错了? – user1809790

+0

是的,它会自动加载瓷砖时,但是,为隐藏/显示,我认为你是jquery/js做到这一点,对不对?所以瓷砖加载不会被触发,这是我的猜测。 –

回答

1

一旦你$("#target-map-block").show();,你可以重建被

map = new google.maps.Map(document.getElementById("map"), mapOptions);

-1

尝试这样,

$("#button-id-to-show").click(function() { 
    $("#target-map-block").show(); 
    updateMap(); 
}); 
+0

它让人恼火,如果有人放弃downvote没有一个有效的理由或评论。 –