/////////更新////////
好的,经过几天的故障排除后,我设法在两台Android设备上正确显示地图。
原来我需要一起做以下事情:
https://maps.googleapis.com/maps/api/js?sensor=false
<access origin="*" subdomains="true"/>
现在主要问题是我不想将所有内容列入白名单,但如果我允许* .google.com,* .googleapis.com,* .gstatic.com等常见嫌疑人,我会收到一些奇怪的行为 on仅限Android 4.2.2设备 - 例如,如果我使用https作为src网址,则地图的底部将不会完全显示(缺少最后一行图块),并且标记将不会显示AT ALL。 然而,通过将所有内容列入白名单,一切正常。
我想我会开始关于白名单领域和我遇到的问题的新线程,因为我似乎无法找到任何相关信息。
////////原始问题////////
我正在使用phonegap和jquery mobile构建应用程序。 在其中一个页面上,我只想显示带有标记的地图等。
然而,我现在面临的问题是:
更新:我还在运行4.2.2的HTC One上进行了测试 - 同样的问题,地图没有显示。
HTML
<div data-role="page" id="mappage">
<div data-theme="a" data-role="header">
<h3>
Map
</h3>
</div>
<div data-role="content" id="content">
<div id="map_canvas" style="height:100%"></div>
</div>
<div data-theme="a" data-role="footer" data-position="fixed">
<h3>
</h3>
</div>
JQUERY:
$(document).on('pageinit', '#mappage',function(){
BuildMap( 50.725,-3.528,50.726,-3.526 );
function BuildMap( lat_shop, long_shop, lat_phone, long_phone ){
var minZoomLevel = 16;
var map = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: minZoomLevel,
center: new google.maps.LatLng( lat_shop, long_shop ),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker_shop = new google.maps.Marker({
position: new google.maps.LatLng( lat_shop, long_shop ),
map: map
});
var marker_phone = new google.maps.Marker({
position: new google.maps.LatLng( lat_phone, long_phone ),
map: map
});
}
});
CSS:
#content {
padding: 0;
position : absolute !important;
top : 40px !important;
right : 0;
bottom : 40px !important;
left : 0 !important;
}
其他可能有用的位:
我有一个链接到页面的按钮来显示地图。在桌面和2.2.2上它工作正常。在4.2.2上它突出显示按钮但没有更改页面。我猜这是因为代码在'pageinit'中运行,它遇到了问题而且没有再进一步了。
我将'pageinit'更改为'pageshow' - 没有完全相同的问题 - 桌面和android 2 OK,android 4.2.2。没有什么只是一个空白页面(显然这次设法改变了页面)。