android - using MylocationOverlay in osmdroid -
i can't make mylocationoverlay work, searched , tried many codes not single working one. black screen. need keep track of user location. managed track user location regular overlay notice each new location map downloaded again (which anoing , not practical).
the code using regular overlay:
import java.util.arraylist; import org.osmdroid.defaultresourceproxyimpl; import org.osmdroid.resourceproxy; import org.osmdroid.tileprovider.tilesource.tilesourcefactory; import org.osmdroid.util.geopoint; import org.osmdroid.views.mapcontroller; import org.osmdroid.views.mapview; import org.osmdroid.views.overlay.itemizediconoverlay; import org.osmdroid.views.overlay.itemizedoverlay; import org.osmdroid.views.overlay.overlayitem; import org.osmdroid.views.util.constants.mapviewconstants; import android.app.activity; import android.content.intent; import android.location.location; import android.location.locationlistener; import android.location.locationmanager; import android.os.bundle; import android.view.menu; import android.widget.toast; public class onlinetracking extends activity implements locationlistener, mapviewconstants { private mapview mmapview; private mapcontroller mapcontroller; private locationmanager mlocmgr; private itemizedoverlay<overlayitem> mmylocationoverlay; private resourceproxy mresourceproxy; arraylist<overlayitem> items; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); mresourceproxy = new defaultresourceproxyimpl(getapplicationcontext()); setcontentview(r.layout.main); initilaizemap(); mlocmgr = (locationmanager) getsystemservice(location_service); mlocmgr.requestlocationupdates(locationmanager.gps_provider, 5000, 3, this); } public void initilaizemap() { mmapview = (mapview) this.findviewbyid(r.id.mapview); mmapview.settilesource(tilesourcefactory.mapnik); //mmapview.setusedataconnection(false); mmapview.setbuiltinzoomcontrols(true); mmapview.setmultitouchcontrols(true); mapcontroller = this.mmapview.getcontroller(); mapcontroller.setzoom(15); mapcontroller.setcenter(new geopoint(15.610762,32.540345)); } public void displaylocation(geopoint loc) { //mapcontroller.setcenter(loc); items = new arraylist<overlayitem>(); // put overlay icon little way map center items.add(new overlayitem("here are", "we keep track of you", loc)); /* ontaplistener markers, shows simple toast. */ this.mmylocationoverlay = new itemizediconoverlay<overlayitem>(items, new itemizediconoverlay.onitemgesturelistener<overlayitem>() { @override public boolean onitemsingletapup(final int index, final overlayitem item) { toast.maketext( onlinetracking.this, "single tap" + item.mtitle, toast.length_long).show(); return true; // 'handled' event. } @override public boolean onitemlongpress(final int index, final overlayitem item) { toast.maketext( onlinetracking.this, "longpress '" + item.mtitle ,toast.length_long).show(); return false; } }, mresourceproxy); mmapview.getoverlays().clear(); this.mmapview.getoverlays().add(this.mmylocationoverlay); //mmapview.invalidate(); } public void onlocationchanged(location location) { int lat = (int) (location.getlatitude() * 1e6); int lng = (int) (location.getlongitude() * 1e6); geopoint gpt = new geopoint(lat, lng); displaylocation(gpt); } @override public void onproviderdisabled(string arg0) {} @override public void onproviderenabled(string provider) {} @override public void onstatuschanged(string provider, int status, bundle extras) {} }
seems not developer error. have tried running following sample project uses osmdroid:
http://android-er.blogspot.it/2012/06/add-mylocationoverlay-on-openstreetmap.html
on emulator running android 2.2 getting black screen @ moment mylocationoverlay
instantiated. tried run same project under emulated device same specifications, running android 4.2, , worked.
i cannot explain why happenning, in case have chooosen use traditional approach , typical itemizediconoverlay
Comments
Post a Comment