如何在 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.GeolocationPhonegap 的 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?
Sencha-Touch:未捕获的类型错误:无法读取未定义的属性“代理”
打开地图屏幕时,如何将 MapView 以用户当前位置为中心?反应原生博览会