如何在 Sencha-Touch2.0 的地图中获取当前位置的标记

Posted

技术标签:

【中文标题】如何在 Sencha-Touch2.0 的地图中获取当前位置的标记【英文标题】:How Can I Get marker on current location in map in Sencha-Touch2.0 【发布时间】:2012-04-26 12:08:17 【问题描述】:

各位朋友,我是 Sencha Touch 平台的新手。

我想用marker 找到用户current location,请帮帮我。我陷入了这种状态。

有什么新的好教程吗,欢迎分享给我..

提前感谢您的宝贵时间。

Ravi Patel

【问题讨论】:

【参考方案1】:

好问题。我以前遇到过类似的问题。但是,后来,我想出了解决办法。

这里是你可以解决它的方法。

使用Phonegap's Geolocation API 或.. 使用 Sencha Touch API 中的Ext.util.Geolocation

Phonegap 的 Geolocation API

演示

    通过geolocation api获取地理位置。

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

    然后使用 lat 和 lng 的值将地图的中心设置为它,并将标记的位置设置为该值。

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

【讨论】:

感谢您的宝贵时间,我已经尝试过上面的代码。但是,它没有用。我想在 Sencha touch2.0 中实现...如果上面的代码可以工作那么你能告诉我我该如何实现它吗? 上面的代码我想特别添加..你能详细说明一下结构吗..... 谢谢你的帮助....我试过了,但还是不行....你能不能把我的 emial 上的演示发给我....我非常感谢你。 ... 请在此处发布您的地图视图的完整代码。这将有助于纠正您的问题。 请通过我的电子邮件 ravip.cenrix@gmail.com 向我发送演示【参考方案2】:

如果只使用 Ext.Map.getGeo() 会简单很多,如下所示:

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

只要您将地图实例化,如果浏览器客户端允许您获取当前位置,它就应该获取当前位置。

HTH!

【讨论】:

【参考方案3】:

我也使用 sencha touch 2.3.1 为类似的应用程序工作 使用 Ext.util.Geolocation 类获取当前位置并使用以下代码自动更新 currentPosition。

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

上面的代码对我有用,我已经在我的应用程序中使用它来获取 currentLocation 并将标记移动到 currentPosition。

【讨论】:

以上是关于如何在 Sencha-Touch2.0 的地图中获取当前位置的标记的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Sencha-Touch2 中使用 Ext.Ajax 运行 javascript?

在 mac 上安装 sencha-touch 2.1

Sencha-Touch:未捕获的类型错误:无法读取未定义的属性“代理”

打开地图屏幕时,如何将 MapView 以用户当前位置为中心?反应原生博览会

touch-chart 1.0 是不是与 sencha touch 2.0 兼容?

角度 2.0 相当于 $scope.$apply