1

クリックすると、マップが現在の場所に更新されるツールバー ボタンがあります。この機能の実際の例を見つけることができず、誰かが私にアドバイスしてくれることを願っています. サンプルコードについては以下をご覧ください - ご協力ありがとうございます

地図:

Ext.define('MyApp.view.Myap', {
    extend: 'Ext.Map',
    alias: 'widget.mymap',
    config: {
        useCurrentLocation: false,
        mapOptions:{
            zoom: 9,
            center: new google.maps.LatLng(42.2, -72.5),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        },
        listeners: {
            maprender : function(comp, map){
                google.maps.event.addListenerOnce(map, "idle", function () {
                    var host = window.location.origin ? window.location.origin : window.location.protocol + "/" + window.location.host;
                    var kmlOptions = {preserveViewport: false}
                    var now = +new Date();
                    var layer = new google.maps.KmlLayer(host + '/path/to.kml?timestamp=' + now, kmlOptions);
                    layer.setMap(map);
                    return layer;
                });  
            },
        }
    },
})

ツールバー ボタン:

Ext.define('MyApp.view.btnLocateMe', {
    extend: 'Ext.Button',
    alias: 'widget.btnlocateme',

    config: {
        ui: 'normal',
        iconCls: 'locate',
        iconMask: true,
        text: 'Locate Me',
        listeners: [
            {
                fn: 'onButtonTap',
                event: 'tap'
            }
        ]
    },

    onButtonTap: function(button, e, options) {
        //Produces error: cannot call method of undefined
        currentLocation: new google.maps.LatLng(this._geo.getLatitude(), this._geo.getLongitude());
        MyApp.view.MyMap.map.setCenter(currentLocation);
    }
});
4

3 に答える 3

0

私の2セントの貢献、これを試してください

1) MyApp.view.Myap で代用

    useCurrentLocation: false,

       useCurrentLocation : {
           autoUpdate : false
       },

また、 currentLocation を変数として宣言する必要があります(推測します)

       var currentLocation = ...

これはうまくいくはずです。onButtonTap であなたと同様のロジックを使用しましたが、コントローラー内で問題なく使用しました

よろしくお願いします

于 2012-09-19T02:44:03.273 に答える
0

一つ提案があります。

現在の場所をに変更してみてください

new google.maps.LatLng( this.geo.getLatitude(),this.geo.getLongitude() ) ;

ここでこの質問からより多くの情報を収集できると思います。

于 2012-09-18T04:02:42.520 に答える
-2

最も簡単な方法 - オプションuseCurrentLocation : trueを使用して別のマップ ビューに切り替えます。

于 2012-09-18T09:14:42.653 に答える