[英]Geolocation doesn't work with cordova
我目前正在使用Intel 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(addresse)中,我有结果!
实际上,我得到4个ID和4个地址。
我检查了我在StackOverFlow上可以找到的所有主题,通常我必须使用addEventListener在//中添加该行,但是它什么也没有改变。
有谁知道该如何改变吗?
ps:当然,cordova geoloc在构建中,并且授予权限!
编辑:我的目标是Android 4.0分钟和iOS 5.1.1。 我正在使用SDK。
由于这里和这里已经表达了多种原因,地理位置常常无法像人们期望的那样发挥作用。
您可以使用XDK中的“ Hello,Cordova”示例应用程序来测试geo,该应用程序也可以在GitHub上使用 。 尝试在各种设备上使用它以查看工作原理。 按下“精细”按钮以启动针对“精细”位置的单个地理位置通话,并按下“粗”按钮以发起针对“粗略”位置的单个地理位置通话。 按下“监视”按钮以发起对一系列地理数据点的请求(通过先按下单个按钮之一将其设置为粗略或精细)。
您在模拟选项卡中获得的行为会比你得到一个真正的设备上有什么显着不同。 设备的类型(Android,iOS等)和该设备的版本会影响您的结果; 设备制造商和您所在的位置(内部或外部)将影响您的结果。 不要以为调用geo API会始终为您提供即时和可靠的数据,而地理定位硬件则无法以这种方式工作……实际上,您不能假设您甚至可以获得有效的结果! 出于某些原因,请参阅我在本文前面所指的两个链接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.