7

google map v3 没有完全显示在 html5 中,phonegap。在此处输入图像描述

这张地图是可拖动的,这里是 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;
  }

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

4

4 回答 4

1

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

于 2012-07-19T12:49:16.040 回答
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();
});

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

$(document).ready(function() {
  google.maps.event.trigger(map, "resize");
});
于 2012-07-19T12:55:07.607 回答
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');
}
于 2015-02-03T12:04:42.057 回答
0

我过去遇到过这个问题,并将我的解决方案发布到了一个类似的问题

以下修复了它:

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

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

于 2015-02-03T13:20:05.727 回答