简体   繁体   中英

How Can I Get marker on current location in map in Sencha-Touch2.0

Hey friends im 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.

Ravi Patel

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

  1. 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'); } 
  2. 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 }); ... ... 

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!

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM