谷歌地图v3没有完全显示在html5中

时间:2012-07-19 12:39:38

标签: android html5 cordova google-maps-api-3

google map v3未完全显示在html5,phonegap中。enter image description here

此地图是可拖动的,这里是JavaScript代码(main.js)

 var map;
 function initialize() {
 var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
 var myLatlng2 = new google.maps.LatLng(-24.363882,131.044922);

 var myOptions = {
 center: myLatlng,
 zoom:5,
 mapTypeId: google.maps.MapTypeId.ROADMAP

 };
 map = new google.maps.Map(document.getElementById("map_canvas"),
 myOptions);

 setMarker(myLatlng);
 setMarker(myLatlng2);

 }

 function setMarker(p)
 {
 marker = new google.maps.Marker({
 position: p,
 title:"Hello World 2!"
 });
 marker.setMap(map);

 }

 initialize();

这是我的HTML

 <!DOCTYPE HTML>
 <html>
 <head>
 <meta name="viewport" content="initial-scale=1.0; maximum-scale=1.0; user-scalable=yes;" />
 <meta http-equiv="Content-type" content="text/html; charset=utf-8">
 <link rel="stylesheet"  href="css/jquery.mobile.css" />
 <link href="css/styles.css" rel="stylesheet" type="text/css" />
 <script type="text/javascript" charset="utf-8" src="js/cordova-1.9.0.js"></script>

 <script type="text/javascript" charset="utf-8" src="js/jquery-1.6.3.min.js"></script>
 <script type="text/javascript" charset="utf-8" src="js/jquery.mobile-1.1.0.js"></script>
 <script type="text/javascript" charset="utf-8" src="js/tabs.js"></script>

 <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
 <script type="text/javascript" src="jquery.ui.map/jquery.ui.map.js"></script>
 <script type="text/javascript" src="jquery.ui.map/jquery.ui.map.services.js"></script>
 <script type="text/javascript" charset="utf-8" src="js/main.js"></script>
 </head>
 <body>
 <div id="page-id" data-role="page" >
 <div id="map-container"><div id="map_canvas" style="height:600px; width:600px;"></div>  </div>

 </div>
 </body>
 </html>

CSS

   #map-container {
    padding: 6px;
    border-width: 1px;
    border-style: solid;
    border-color: #ccc #ccc #999 #ccc;
    -webkit-box-shadow: rgba(64, 64, 64, 0.5) 0 2px 5px;
    -moz-box-shadow: rgba(64, 64, 64, 0.5) 0 2px 5px;
    box-shadow: rgba(64, 64, 64, 0.1) 0 2px 5px;
    width: 600px;
  }

  #map_canvas {
    width: 600px;
    height: 400px;
  }

如果我在firebug中检查它完全加载并在div中显示完整的地图,请建议我解决问题在哪里。

4 个答案:

答案 0 :(得分:1)

我们遇到了同样的问题,我们通过在地图上设置“max-width:none”来解决它。但我不记得为什么。 :(

答案 1 :(得分:0)

查看截图,似乎mapcontrol占用了所需的空间,但实际的地图区域不够大。尝试将您的调用移至initialize();以便在页面的其余部分加载时执行,看看它是否有帮助。

var map;
function initialize() {
  var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
  var myLatlng2 = new google.maps.LatLng(-24.363882,131.044922);

  var myOptions = {
    center: myLatlng,
    zoom:5,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

  setMarker(myLatlng);
  setMarker(myLatlng2);
}

function setMarker(p)
{
  marker = new google.maps.Marker({
    position: p,
    title:"Hello World 2!"
  });
  marker.setMap(map);
}


$(document).ready(function() {
  initialize();
});

另一个解决方案可能是调用resize事件并让地图控件在加载完所有内容后自行重新测量,这是通过调用google.maps.event.trigger(map, "resize");(并在就绪函数之外调用initialize())来完成的)。

$(document).ready(function() {
  google.maps.event.trigger(map, "resize");
});

答案 2 :(得分:0)

请检查以下内容:

<div id="mapa"  style="width: 350px; height: 350px"></div>

上面是要列出的地图的div。

var map = new google.maps.Map(
document.getElementById('mapa'), {
center: new google.maps.LatLng(9.295680287227711, 76.87921151518822),
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
});

我尝试了以上所有不会工作,所以做了这样的技巧,给出了期望的结果。 我在函数上写了一个鼠标并调用下面的代码

(1)修改

<div id="mapa" onmouseover="show_sidebar()" style="width: 350px; height: 350px"></div> 

(2)

function show_sidebar(){
google.maps.event.trigger(map, 'resize');
}

答案 3 :(得分:0)

我过去曾遇到过这个问题,并将我的解决方案发布到similar question

以下修正了它:

google.maps.event.addListenerOnce(map, 'idle', function() {
   google.maps.event.trigger(map, 'resize');
});

等待地图的空闲状态(即它已经完成加载),然后告诉它自己调整大小。