我正在使用 Cordova 为 iPhone 创建一个应用程序。我对objective-c不是很好,但之前写过一些插件,所以如果需要我可以。
我有连锁店的位置列表(gps 线)。每当应用程序的用户靠近某个位置时,我想弹出一个通知。
phonegap 支持这个吗?如果没有,谁能指出我在objective-c中实现这一点的正确方向?
我正在使用 Cordova 为 iPhone 创建一个应用程序。我对objective-c不是很好,但之前写过一些插件,所以如果需要我可以。
我有连锁店的位置列表(gps 线)。每当应用程序的用户靠近某个位置时,我想弹出一个通知。
phonegap 支持这个吗?如果没有,谁能指出我在objective-c中实现这一点的正确方向?
是的,它确实!首先,您应该有一个 watchPosition 来获取用户移动时的新位置。
有关 watchPosition 的更多信息,请参见此处:
http://docs.phonegap.com/en/2.1.0/cordova_geolocation_geolocation.md.html#geolocation.watchPosition
然后,根据用户与兴趣点的接近半径,您应该使用弹出窗口进行通知。
编辑
如果你首先使用谷歌地图,你应该初始化地图并调用函数 geolocalization,然后如果距离小于 1Km,则使用函数 calculateNearLocation 在 POI 数组中查找。如果是这样,它会通过振动发出警报。
使用谷歌地图的代码将是这样的:
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++;
});
}