【问题标题】:Sencha alert when POI is near current location of user当 POI 靠近用户当前位置时发出 Sencha 警报
【发布时间】:2013-03-07 22:06:45
【问题描述】:

真的可以提供一些帮助,当用户靠近某个设定的兴趣点时,我正在尝试借助 sencha 在 android 手机上推送警报。

在我看来,我有一张地图

{
        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);

它直接在标记顶部显示我的 GeoMarker,没有警报。我尝试了一些不同的类似事情,但没有成功,如下所示....

 if (GeoMarker == poi){
            alert("poi found");
        }

我知道我的过程在这两种情况下都是错误的,因为我的位置不会与 poi 完全相同,但我无法弄清楚如何将当前位置的适当接近设置为警报。我发现很难找到任何文档来说明如何成功实现与在 poi 警报方面类似的东西。任何可能有帮助的帮助或文档链接将不胜感激。

提前致谢

【问题讨论】:

    标签: geolocation sencha-touch-2 alert


    【解决方案1】:

    我首先通过使用'if'语句来检查两个点的纬度和经度值之间的差异是否小于设置变量,从而获得了成功的结果。但我认为必须有一种更有效的方法通过当前位置周围的某种形式的半径来实现这一点。

    终于遇到了这个线程....Calculate distance between two points in google maps V3 并且正如其中一个答案所建议的那样,我成功使用了以下内容......

     google.maps.geometry.spherical.computeDistanceBetween (latLngA, latLngB); 
    

    检查两点之间的距离是否小于我想要的距离。希望这对将来的人有所帮助。

    欢迎任何人提供有关执行相同操作的替代方法的任何信息。

    【讨论】:

      猜你喜欢
      • 2014-01-31
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多