1

我的地图标记有问题。第一次加载地图时,一切正常。然而,当 div 被隐藏并重新显示(并调用相同的函数 map())时,地图加载正常,但标记不会出现,即使地图位于我真正所在的位置的中心。

这是地图编码的片段:

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);        
  }

}

更新: 有没有办法完全摧毁谷歌地图?因为在隐藏时,我可以在技术上完全破坏地图并在需要时加载它。

4

2 回答 2

1

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

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

于 2013-01-05T13:18:18.830 回答
0

像这样试试

$("#button-id-to-show").click(function() {
  $("#target-map-block").show();
  updateMap();
});
于 2013-01-05T10:08:29.617 回答