How Can I Get Marker On Current Location In Map In Sencha-touch2.0
Solution 1:
Nice question. I faced a similar problem before. But, later, I figured out the solution.
Here's how you can solve it.
- Either use Phonegap's Geolocation API or ..
- Use Ext.util.Geolocation from Sencha Touch API
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); functiongeoLocationSuccess(position) { lat = position.coords.latitude; lng = position.coords.longitude; Ext.Msg.alert("Geolocation","Latitude:"+ lat +", Longitude:"+ lng); } functiongeoLocationError() { 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.
......varposition=newgoogle.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=newgoogle.maps.Marker({id:'geoLocMarker',position:position,map:map.getMap(),visible:true});......
Solution 2:
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!
Solution 3:
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.
Post a Comment for "How Can I Get Marker On Current Location In Map In Sencha-touch2.0"