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

}

更新: Googleマップを完全に破壊する方法はありますか?非表示にすると、技術的にマップを完全に破棄し、必要に応じてロードできるためです。

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 に答える