我正在使用Cordova为iPhone创建一个应用程序。 我对objective-c不太满意,但之前已经写了一些插件,所以如果需要的话我也可以。
我有一系列商店的位置(gps线)列表。我想在应用程序的用户靠近其中一个位置时弹出通知。
phonegap是否支持此功能?如果没有,有人能指出我在objective-c中实现这个目标的正确方向吗?
答案 0 :(得分:5)
是的,确实如此! 首先,你应该有一个watchPosition用于获取用户移动时的新位置。
有关watchPosition的更多信息,请点击此处:
http://docs.phonegap.com/en/2.1.0/cordova_geolocation_geolocation.md.html#geolocation.watchPosition
然后,根据用户与感兴趣点的接近半径,您应该使用弹出窗口进行证明。
修改强>
如果你首先使用谷歌地图,你应该初始化地图并调用函数geolocalization,然后使用函数calculateNearLocation查看POI数组,如果距离小于1Km,例如。如果是,它会发出振动警报。
代码将使用谷歌地图:
var watchID = null;
function geolocalization()
{
//Each 3 seconds looks new position
var options = { frequency: 3000 };
watchID = navigator.geolocation.watchPosition(onSuccessG, onErrorG, options);
}
地理定位的成功:
function onSuccessG(position) {
var mipos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
calculateNearLocation(mipos);
}
用于计算用户的位置是否接近POI:
function calculateNearLocation(mipos) {
var indice = 0;
$.each(listPOI, function() {
var distanceBetween = Math.ceil(google.maps.geometry.spherical.computeDistanceBetween(new google.maps.LatLng(listPOI[indice].latitudes, listPOI[indice].longitudes), mipos));
if(distanceBetween < 10000) {
navigator.notification.vibrate(2000);
}
indice++;
});
}