Geolocation POI接近用户当前位置时Sencha警报
真的需要一些帮助,我正试图在sencha的帮助下在android手机上推送一个警报,当用户接近某个设定的兴趣点时 在我看来,我有一张地图Geolocation POI接近用户当前位置时Sencha警报,geolocation,sencha-touch-2,alert,Geolocation,Sencha Touch 2,Alert,真的需要一些帮助,我正试图在sencha的帮助下在android手机上推送一个警报,当用户接近某个设定的兴趣点时 在我看来,我有一张地图 { xtype: 'map', id: 'mapOne', cls: 'center', flex: 1, width: '100%', mapOptions : { mapTypeControl : false,
{
xtype: 'map',
id: 'mapOne',
cls: 'center',
flex: 1,
width: '100%',
mapOptions : {
mapTypeControl : false,
navigationControl : true,
streetViewControl : false,
backgroundColor: 'transparent',
disableDoubleClickZoom: true,
zoom: 10,
draggable: true,
keyboardShortcuts: true,
scrollwheel: false,
enableHighAccuracy: true
},
listeners : {
maprender : function(comp, map){
var currentMarker = new google.maps.Marker({
position: new google.maps.LatLng(setlat,setlon),
//title : 'Sencha HQ',
map: map,
icon: image
});
setTimeout( function(){map.panTo (new google.maps.LatLng(markerlat, markerlong));} , 1);
}
}
在我的控制器中,我在渲染贴图之前设置了以下内容
var poi = new google.maps.LatLng(markerlat, markerlong);
然后在我的控制器中初始化一个地理位置对象,如下所示
var geo = Ext.create('Ext.util.Geolocation', {
autoUpdate: true,
frequency :3000,//every 3 seconds
listeners: {
locationupdate: function(geo) {
var curlat = geo.position.coords.latitude;
var curlong = geo.position.coords.longitude;
console.log('New GEO CURRENT: ' + curlat + ' ' + curlong);
var me = new google.maps.LatLng(curlat, curlong);
if (me == poi){
alert("poi found");
}
},
locationerror: function(geo, bTimeout, bPermissionDenied, bLocationUnavailable, message) {
if(bTimeout){
alert('Timeout occurred.');
} else {
alert('Error occurred.');
}
}
}
}))
我还设置了一个地质标记器,看看我是否在poi附近被发现
GeoMarker = new GeolocationMarker(mapOne);
它显示我的Geomemarker直接在标记的顶部,没有任何警报。我尝试了一些不同的类似的事情,但没有成功,如以下
if (GeoMarker == poi){
alert("poi found");
}
我知道我的过程在这两种情况下都是错误的,因为我的位置与poi不完全相同,但我不知道如何将当前位置的适当接近度设置为警报。我发现很难找到任何文档来说明如何成功地实现与poi警报类似的功能。如有任何帮助或文档链接可能会有所帮助,我们将不胜感激
提前感谢我首先通过使用“if”语句检查两个点的纬度值和经度值之间的差异是否小于设定的变量,获得了成功的结果。但我认为必须有一种更有效的方法,通过当前位置周围的某种形式的半径来实现这一点 终于发现了这个线索。。。。正如我在其中一个答案中所建议的那样,我成功地使用了以下内容
google.maps.geometry.spherical.computeDistanceBetween (latLngA, latLngB);
检查两个点之间的距离是否小于我想要的距离。希望这对将来的人有所帮助
不过,欢迎任何人提供任何信息,或提供其他方法来执行同样的操作