Reputation: 63
Hey friends i m new to Sencha Touch platform.
And I want to find user current location
with marker
please help me out. i stuck in this condition.
Is there any new good tutorial for me then please share with me..
Thanks in Advance for your time.
Upvotes: 6
Views: 4680
Reputation: 1006
I have also work for simillar app using sencha touch 2.3.1
Using Ext.util.Geolocation class for get current location and automatically update the currentPosition using the following code.
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);
}
}
}
});
The above code worked for me and i have already used in my app for getting currentLocation and moved the marker into currentPosition.
Upvotes: 0
Reputation: 5454
It's a lot simpler if you just use Ext.Map.getGeo() as follows:
var geo = extmap.down("#Map").getGeo();
var currentPosition = new google.maps.LatLng(geo.getLatitude(), geo.getLongitude());
As long as you have your map instantiated, it should get the current location if the browser client allows for you to obtain that.
HTH!
Upvotes: 0
Reputation: 46405
Nice question. I faced a similar problem before. But, later, I figured out the solution.
Here's how you can solve it.
Demo with Phonegap's Geolocation API
Get the geolocation via the 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');
}
Then use the values of lat and lng to set the map's center to it as well as set the marker's position to that value.
...
...
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
});
...
...
Upvotes: 4