android - How to get current location at once and after it -load map? -
i have next issue: want current location after want draw markers around it. have used locationlistener
current location, when run app saw empty map , after few seconds current location , draw markers. want create next: want load map when after current location.i don't want see map without markers. code is:
public class whereamifragment extends basecontainerfragment implements locationlistener { private supportmapfragment mmapfragment; private locationmanager locationmanager; public static whereamifragment newinstance() { homecoming new whereamifragment(); } private googlemap.onmapclicklistener monmapclicklistener = new googlemap.onmapclicklistener() { @override public void onmapclick(latlng latlng) { } }; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view root = inflater.inflate(r.layout.fragment_where_am_i, container, false); mmapfragment = supportmapfragment.newinstance(); getchildfragmentmanager().begintransaction().replace(r.id.map_container, mmapfragment).commit(); homecoming root; } @override public void onstart() { super.onstart(); mmapfragment.getmap().setmylocationenabled(true); mmapfragment.getmap().setonmapclicklistener(monmapclicklistener); locationmanager = (locationmanager) getactivity().getsystemservice(getactivity().location_service); locationmanager.requestlocationupdates(locationmanager.network_provider, 0, 0, this); } @override public void onlocationchanged(location location) { locationmanager.removeupdates(whereamifragment.this); locationmanager = null; drawstops(new latlng(location.getlatitude(), location.getlongitude())); } private void drawstops(latlng latlng) { defaultcallback<arraylist<stop>> callback = new defaultcallback<arraylist<stop>>(getactivity()) { @override public void success(arraylist<stop> stops, response response) { log.d("mylogs", "array list size= " + stops.size()); (int = 0; < stops.size(); i++) { log.d("mylogs", + ". " + stops.get(i).getlng()); drawmarkers(stops); } } }; mmapfragment.getmap().movecamera(cameraupdatefactory.newlatlngzoom(latlng, 14.0f)); requestdatabuilder builder = new requestdatabuilder(getactivity()).preparewhereamidata( latlng, 500); ewayapi api = restadaptersprovider.getapi(new stopsconverter()); api.sendrequest(builder, callback); } private void drawmarkers(arraylist<stop> arraylist) { (int = 0; < arraylist.size(); i++) { mmapfragment.getmap().addmarker(new markeroptions() .position(arraylist.get(i).getlng()) .title(arraylist.get(i).gettitle())); } } @override public void onstatuschanged(string s, int i, bundle bundle) { } @override public void onproviderenabled(string s) { } @override public void onproviderdisabled(string s) { }
}
the map can init as,
supportmapfragment fm = (supportmapfragment) getsupportfragmentmanager().findfragmentbyid(r.id.map); map = fm.getmap(); map.setmylocationenabled(true); map.settrafficenabled(true); map.setmaptype(googlemap.map_type_normal);
you can add together markers like,
latlng toposition = new latlng(promolat, promolon); map.addmarker(new markeroptions() .position(toposition) .title(promotions.getpromotionheading().tostring()) .snippet(merchants.getmerchantaddress().tostring()) .icon(bitmapdescriptorfactory.defaultmarker(bitmapdescriptorfactory.hue_azure))); map.movecamera(cameraupdatefactory.newlatlngzoom(toposition, 15));
android google-maps location google-maps-android-api-2
No comments:
Post a Comment