0

本当にいくつかの助けを借りて行うことができます、私はユーザーが特定の関心のある設定点の近くにいるときに煎茶の助けを借りて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とまったく同じではないので、どちらの場合も私のプロセスが間違っていることはわかっていますが、現在の位置の適切な近接度をアラートに設定する方法がわかりません。ポイでのアラートに関して同様のことをうまく実装する方法を示すドキュメントを見つけるのは難しいと感じています。ヘルプまたは役立つ可能性のあるドキュメントへのリンクをいただければ幸いです。

前もって感謝します

4

1 に答える 1

0

最初に、「if」ステートメントを使用して、両方のポイントの緯度と経度の値の差が設定された変数よりも小さいかどうかを確認することで、成功した結果を得ました。しかし、現在の場所を中心とした何らかの形の半径を介してこれを実装するより効率的な方法があるに違いないと思いました。

最後にこのスレッドに出くわしました....グーグルマップV3で2点間の距離を計算し、回答の1つで示唆されているように、次を使用して成功しました......

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

両方のポイント間の距離が希望の距離よりも短いかどうかを確認します。これが将来誰かに役立つことを願っています。

ただし、同じことを実行するための代替方法に関する情報は誰からでも歓迎されます。

于 2013-03-07T14:06:45.550 に答える