地理定位不适用于cordova

时间:2016-01-24 15:51:00

标签: javascript cordova google-maps geolocation intel-xdk

我目前正在开发一款采用英特尔XDK的移动应用程序(在后台它最终是Cordova,这就是我将Cordova列入头衔的原因。)

通过Ajax请求,我得到了一些地址,并且通过这些地址,我想计算它们与用户当前位置之间的距离。

所以,我得到地址,我转换它们,然后我就有所作为。

但实际上,没有任何工作!

function codeAddress(id, addresse) {
    geocoder.geocode( { 'address': addresse}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
            setTimeout(function(){}, 100);
        }

        console.log(id);
        console.log(addresse);

        //document.addEventListener("intel.xdk.device.ready",function(){
        if (navigator.geolocation)
        {
            if (status == google.maps.GeocoderStatus.OK)
            {
                navigator.geolocation.getCurrentPosition(function(position) {
                    addressEvent = results[0].geometry.location;
                    var pos = {
                        lat: position.coords.latitude,
                        lng: position.coords.longitude
                    };
                    var position = new google.maps.LatLng(pos.lat, pos.lng)
                    var resultat = google.maps.geometry.spherical.computeDistanceBetween(addressEvent, position);
                    console.log(resultat);
                    console.log(addressEvent);
                    console.log(pos);
                    console.log(position);
                    var convert = Math.floor(resultat);
                    var finalConvert = convert + " m";
                    var distance = document.createElement('span');
                    distance.innerHTML = finalConvert;
                    distance.className = "geo";
                    document.getElementsByClassName('meta-info-geo')[id].appendChild(distance);
                }, function() {
                    handleLocationError(true, infoWindow);
                });
            }
        }
        //},false);
    });
}

在console.log(id),console.log(地址)中,我有结果!

实际上我得到4个ID和4个地址。

我检查了我在StackOverFlow上可以找到的所有主题,我通常在//中添加addEventListener中的行,但它什么都没改变。

有人知道如何改变吗?

ps:当然,cordova geoloc在构建中并且授予了权限!

编辑:我的目标是Android 4.0分钟和iOS 5.1.1。我正在使用SDK。

编辑2:enter image description here

1 个答案:

答案 0 :(得分:1)

地理定位经常无法按照人们期望的方式发挥作用,原因有多种herehere

您可以使用" Hello,Cordova"来试验地理位置。 XDK中的示例应用以及available on GitHub。尝试在各种设备上使用它来查看工作原理。推动"罚款"按钮,用于启动单个地理位置调用以获得"罚款"位置和推动"粗糙"按钮,为#"粗略"发起单个地理位置调用地点。推动"观看"按钮,用于启动对一系列地理数据点的请求(通过先按下其中一个按钮设置为粗略或精细)。

您在“模拟”标签中获得的行为显着与您在真实设备上获得的行为不同。设备类型(Android,iOS等)以及该设备的版本将影响您的结果;设备制造商和您的位置(内部或外部)将影响您的结果。不要以为调用geo API会始终为您提供即时可靠的数据,地理定位硬件无法正常工作......事实上,您不能假设您甚至可以获得有效的结果!请参阅我之前在帖子中指出的两个链接,原因如下。