我有一个离子/ cordova android项目,我尝试获取服务中某些坐标的位置;地图sdk加载正常,在我的服务中,我有以下内容:
var lat = 30; // example
var lng = 32; // example
var geocoder = new google.maps.Geocoder(); // geocoder is not undefined here
var latlng = new google.maps.LatLng(lat, lng);
geocoder.geocode({'location': latlng}, function(results, status) {
console.log("geocoder.geocode callback"); // never printed ...
});
在HTML中,API加载如下:
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?v=3&key=MOBILE_API_KEY"></script>
知道我在这里做错了什么吗?
[编辑]
我尝试从脚本加载url中删除key参数;那里没有变化;通过浏览器访问应用程序,geocoder.geocode工作正常;使用Android模拟器或Android设备运行它,它不起作用。这可能与许可有关吗?
顺便说一下,我的content-security-policy设置如下:
[EDIT2]
用一个离子项目例子做了笔;使用以下命令创建项目:
ionic start TheBlank blank
并复制代码。 http://codepen.io/anon/pen/RPxNaL
// add the android platform
ionic platform add android
// run the project on device
ionic run android // geocode callback will not work here
ionic serve // geocode callback will work here
答案 0 :(得分:0)
问题在某种程度上与离子有关。使用cordova运行和模拟后,事情开始起作用了。我用ionic-starter-maps模板测试了这个。要自己动手,试试这个:
ionic start MyMaps maps
ionic platform add android
ionic emulate android # won't work
ionic start MyMaps maps
cordova platform add android
cordova emulate android # works!
另外,请确保content-security-policy具有所需的规则:
<meta http-equiv="Content-Security-Policy" content="
default-src 'self' data: gap:
https://ssl.gstatic.com;
script-src 'self' 'unsafe-inline' 'unsafe-eval'
https://maps.gstatic.com https://maps.googleapis.com;
img-src 'self'
https://maps.gstatic.com https://maps.googleapis.com;
style-src 'self' 'unsafe-inline' *;
media-src *;">