-1

こんにちは、現在の場所にマーカーを配置しようとしていますが、以下のコードはロスアトロスに戻り続けます。マーカーを取り出すと、自分の位置が特定されます。マーカーを機能させるにはどうすればよいですか?

Ext.define('FirstApp.view.Mapd',{
extend:'Ext.Panel',
    xtype:'maps',


     config : {
        fullscreen: true,
        layout: 'fit',
       title:'Map',
        iconCls:'map',

        items: [{
            xtype:  'map',

            mapOptions : {
               useCurrentLocation: true,
                zoom : 12,
                mapTypeId : google.maps.MapTypeId.ROADMAP,
                navigationControl: true,
                navigationControlOptions: {
                    style: google.maps.NavigationControlStyle.DEFAULT
                }
            },

            listeners: {


                maprender: function(comp, map) {
                   var marker = new google.maps.Marker({
                   map : map,
                   position : map.center,
                   title : "Me",
                   animation: google.maps.Animation.BOUNCE
                       });

                    setTimeout(function() {
                          map.panTo(map.center);
                    }, 1000);
                }
            }
        }]
    }
})
4

1 に答える 1

0

あなたの指示の順序はすべて間違っています...以下の順序に従う必要があります::

  1. 以下のように geo メソッドを呼び出して、現在の場所を見つけて currentLocation をその位置に更新します。

    mapOptions : { . . . 
          center : center
          zoom : 15
    },
    
    geo:new Ext.util.GeoLocation({
    
            autoUpdate:true,
            maximumAge: 0,
            timeout:2000,
            listeners:{
                locationupdate: function(geo) {
                    center = new google.maps.LatLng(geo.latitude, geo.longitude);
                    if (map.rendered)
                        map.update(center)
                    else
                        map.on('activate', map.onUpdate, map, {single: true, data: center});
                },
                locationerror: function (geo,bTimeout, bPermissionDenied, bLocationUnavailable, message) {
                    if(bLocationUnavailable){
                        alert('yayyyyour Current Location is Unavailable on this device');
                    }
                    else if (bPermissionDenied){
                        alert('Location capabilities have been disabled on this device.');
                    }      
                }
            }
        });
    
  2. maprender イベントをマップ オブジェクトのリスナーに追加します。ここで、マップ マーカーを追加できます。
    上記の手順が完了すると、マップは最終的に currentLocation を完全に中心に配置され (エラーが発生することはありません)、マーカー オブジェクトを作成し、その位置をマップ オブジェクトの中心に設定します (既に中心に配置されているため)。つまり、マーカーが現在の場所にあることを意味します)

    maprender : function(comp, map){
                var pos1;
                pos1 = new google.maps.LatLng(lats, longs);
                pos = pos1;
                var marker = new google.maps.Marker({
                     . . . .
                });
                map.setMapTypeId(google.maps.MapTypeId.HYBRID);
    
                setTimeout( function(){map.panTo (pos);} , 1000);
            }
    
于 2013-03-26T20:31:12.397 に答える