2012-04-26 31 views

Trả lời

4

Câu hỏi hay. Tôi đã đối mặt với một vấn đề tương tự trước đây. Nhưng, sau đó, tôi đã tìm ra giải pháp.

Dưới đây là cách bạn có thể giải quyết.

Demo với Định vị API PhoneGap của

  1. Lấy geolocation qua api geolocation.

    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. Sau đó sử dụng các giá trị của lat và lng để thiết lập trung tâm của bản đồ với nó cũng như thiết lập vị trí của điểm đánh dấu để giá trị đó.

    ... 
    ... 
    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

Cảm ơn Đối với thời gian u'r, tôi đã thử trên mã. Nhưng, nó đã không hoạt động. Tôi muốn thực hiện trong Sencha touch2.0 ... nếu mã trên được làm việc sau đó bạn có thể pls cho tôi biết làm thế nào tôi có thể implemetn nó? –

+0

Bạn gặp sự cố ở đâu? Phần nào của mã? –

+0

mã ở trên mà tôi muốn giải thích thêm .. và bạn có thể vui lòng elobrate cấu trúc khôn ngoan ..... –

0

Đó là đơn giản hơn rất nhiều nếu bạn chỉ cần sử dụng Ext.Map.getGeo() như sau:

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

Chừng nào bạn đã khởi tạo bản đồ của bạn, nó sẽ nhận được vị trí hiện tại nếu trình duyệt của trình duyệt cho phép bạn có được điều đó.

HTH!

0

Tôi cũng làm việc cho ứng dụng simillar sử dụng sencha touch 2.3.1
Sử dụng lớp Ext.util.Geolocation để lấy vị trí hiện tại và tự động cập nhật hiện tại bằng cách sử dụng mã sau.

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

Mã trên đã làm việc cho tôi và tôi đã sử dụng trong ứng dụng của tôi để lấy vị trí hiện tại và đã di chuyển điểm đánh dấu vào vị trí hiện tại.

Các vấn đề liên quan