我正在写Phonegap的第一个应用程序,我一直在Android设备上测试它。我相信我已经给予了相应的许可:
<uses-permission android:name="android.permission.INTERNET" />
但地图没有显示出来。我试图从Web服务获取经度和经度,并使用它在Google地图上放置标记。我相信问题实际上是因特网访问,就好像我通过Visual Studio作为网站运行,服务返回坐标并显示地图。但是,当编译应用程序并且该网站在应用程序webview中运行时,不会返回坐标,也不会显示地图。
我还添加了一个表来显示返回的坐标,它们再次显示在浏览器中,但在正在运行的应用程序中是空白的。有谁知道为什么webview无法连接到互联网并返回所需的数据?我已经删除了Web服务的实际地址,但我知道这很好,因为它可以在浏览器中运行。
HTML页面:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true"></script>
<link rel="stylesheet" type="text/css" href="css/index.css" />
</head>
<body>
<div class="app2">
<div id="map" style="width: 200px; height: 150px"></div>
<script type="text/javascript">
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "http://www.xxxxxxxx.com/mobile/iphone/xml/postal.asp?postal=33173", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
var myOptions = {
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP,
};
var map = new google.maps.Map(document.getElementById("map"), myOptions);
var lat = x[i].getElementsByTagName("latitude")[0].childNodes[0].nodeValue;
var long = x[i].getElementsByTagName("longitude")[0].childNodes[0].nodeValue;
var pos = new google.maps.LatLng(lat, long);
var infowindow = new google.maps.InfoWindow({
map: map,
position: pos,
content: "Postcode 33173(Lat:" + lat + ", Long:" + long + ")"
});
map.setCenter(pos);
</script>
<script>
document.write("<table border='1'>");
document.write("<tr><td>Postcode</td><td>latitude</td><td>longitude</td></tr>");
var x = xmlDoc.getElementsByTagName("position");
for (i = 0; i < x.length; i++) {
document.write("<tr><td>33173</td><td>");
document.write(x[i].getElementsByTagName("latitude")[0].childNodes[0].nodeValue);
document.write("</td><td>");
document.write(x[i].getElementsByTagName("longitude")[0].childNodes[0].nodeValue);
document.write("</td></tr>");
}
document.write("</table>");
</script>
</div>
</body>
</html>
清单:
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="1.0.0" android:windowSoftInputMode="adjustPan" package="dig.phonegap.loa_app" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="18" />
<application android:allowBackup="false"
android:hardwareAccelerated="true"
android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
android:label="@string/app_name"
android:name="HelloWorld"
android:theme="@android:style/Theme.Black.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
答案 0 :(得分:8)
在config.xml
:
平台 - &gt; android - &gt; res - &gt; xml - &gt; config.xml中
平台 - &gt; ios - &gt; config.xml中
平台 - &gt; wp7 - &gt; config.xml中
平台 - &gt; wp8 - &gt; config.xml中
<access origin="*" />
答案 1 :(得分:7)
我遇到了同样的问题,不得不将以下内容添加到config.xml
。
<access origin="*" />
<plugin name="cordova-plugin-whitelist" version="1" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
答案 2 :(得分:4)
确保在res / xml / config.xml中设置了以下内容:
<access origin="*" />