2012-04-26 8 views

Odpowiedz

4

Nicea pytanie. Przedtem miałem podobny problem. Później jednak wymyśliłem rozwiązanie.

Oto jak możesz go rozwiązać.

Demo z PhoneGap za geolokalizacji API

  1. Pobierz geolokalizacji za pośrednictwem interfejsu API geolokalizacji.

    vat lat, lng; 
    var geoLocationOptions = { maximumAge: 3000, timeout: 5000, enableHighAccuracy: true }; 
    navigator.geolocation.getCurrentPosition(geoLocationSuccess,geoLocationError,geoLocationOptions); 
    
    function geoLocationSuccess(position) { 
        lat = position.coords.latitude; 
        lng = position.coords.longitude; 
        Ext.Msg.alert("Geolocation","Latitude:"+ lat +", Longitude:"+ lng); 
    } 
    
    function geoLocationError() { 
        Ext.Msg.alert('Error','Error while getting geolocation'); 
    } 
    
  2. Następnie użyj wartości szer i LNG ustawić wyśrodkować mapę do niej, jak również ustawić pozycję markera do tej wartości.

    ... 
    ... 
    var position = new google.maps.LatLng(lat,lng); 
    map = this.add({ 
         xtype: 'map', 
         getLocation: true, 
         autoLoad: true, 
         mapOptions: { 
          zoom: 15, 
          center: position, 
          mapTypeId: google.maps.MapTypeId.ROADMAP, 
          navigationControl: true, 
          zoomControl: true, 
          mapTypeControl: true, 
          scrollwheel: true, 
          scaleControl: true, 
          zoomControlOptions: { 
           style: google.maps.ZoomControlStyle.LARGE 
          } 
         } 
        }); 
    
    marker = new google.maps.Marker({ 
         id: 'geoLocMarker', 
         position: position, 
         map: map.getMap(), 
         visible: true 
    }); 
    ... 
    ... 
    
+0

Dziękuję za czas, próbowałem powyżej kodu. Ale to nie zadziałało. Chcę zaimplementować w Sencha touch2.0 ... jeśli powyższy kod jest pracował, czy możesz mi powiedzieć, w jaki sposób mogę to implemetn? –

+0

Gdzie napotykasz problem? Która część kodu? –

+0

powyższy kod, w którym chcę dodać .. i proszę przesłać strukturę mądry ..... –

0

To dużo prostsze, jeśli tylko używać Ext.Map.getGeo() w następujący sposób:

var geo = extmap.down("#Map").getGeo(); 
    var currentPosition = new google.maps.LatLng(geo.getLatitude(), geo.getLongitude()); 

Tak długo, jak masz mapę instancji, powinien on uzyskać aktualną lokalizację jeśli klient przeglądarki pozwala na uzyskanie tego.

HTH!

0

Mam również pracować na zblizonym aplikacji przy użyciu Sencha dotyku 2.3.1
Korzystanie klasę Ext.util.Geolocation dla uzyskać aktualną lokalizację i automatycznie aktualizuje currentPosition używając następującego kodu.

Ext.create('Ext.util.Geolocation', { 
autoUpdate: true, 
allowHighAccuracy: true, 
frequency: '5000', // set the milliseconds for the location update 
listeners: { 
locationupdate: function(geo) { 
    latitude=Global.currentUserLocations.currentLat; 
    longitude=Global.currentUserLocations.currentLong; 
    if(Global.currentUserPositionMarker) 
    { 
     latlng1=new google.maps.LatLng(latitude, longitude); 
     Global.currentUserPositionMarker.setPosition(latlng1); 
    } 
    } 
} 
}); 

Powyższy kod pracował dla mnie i już użyłem w mojej aplikacji do pobrania currentLocation i przeniesienia znacznika do currentPosition.

Powiązane problemy