在离子cordova中永远不会调用geocoder.geocode回调

时间:2015-06-25 11:49:29

标签: google-maps cordova google-maps-api-3 ionic geocode

我有一个离子/ 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

1 个答案:

答案 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   *;">