json - Change the icon of multiple Android Google maps markers dynamically -


i'm trying change multiple google maps marker icon based on urls webserver. since worked web applications new me.

i have read in other topics have create new thread, if want multiple photos doesn't become problem? have suggestion problem?

here code:

import android.location.criteria; import android.location.location; import android.location.locationlistener; import android.location.locationmanager; import android.os.bundle; import android.util.log; import android.view.menu; import android.view.menuitem; import android.support.v7.app.actionbaractivity; import android.view.view;  import com.google.android.gms.maps.cameraupdatefactory; import com.google.android.gms.maps.googlemap; import com.google.android.gms.maps.supportmapfragment; import com.google.android.gms.maps.model.bitmapdescriptorfactory; import com.google.android.gms.maps.model.latlng; import com.google.android.gms.maps.model.marker; import com.google.android.gms.maps.model.markeroptions;  import org.json.jsonarray; import org.json.jsonexception;  public class mainmap extends actionbaractivity implements view.onclicklistener {  private googlemap mmap; // might null if google play services apk not available. private locationmanager location; private string provider;  private double lat; private double lng;  private double pic_lat; private double pic_lng; private string image; public static string log_tag = "cn-quotes";   @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_mainmap);     location = (locationmanager) getsystemservice(location_service);     criteria c = new criteria();     provider = location.getbestprovider(c, false);     setupmapifneeded();     view newphoto = findviewbyid(r.id.button_local_position);     newphoto.setonclicklistener(this);     view popphoto  =findviewbyid(r.id.button_popphoto);     popphoto.setonclicklistener(this); }  @override public boolean oncreateoptionsmenu(menu menu) {     // inflate menu; adds items action bar if present.     getmenuinflater().inflate(r.menu.menu_main, menu);     return true; } @override public boolean onoptionsitemselected(menuitem item) {     // handle action bar item clicks here. action bar     // automatically handle clicks on home/up button, long     // specify parent activity in androidmanifest.xml.     int id = item.getitemid();      //noinspection simplifiableifstatement     if (id == r.id.action_settings) { //            startactivity(new intent(this, settingsactivity.class));         return true;     }      return super.onoptionsitemselected(item); }  @override protected void onresume() {     super.onresume();      location.requestlocationupdates(provider, 300000, 1000, onlocationchange);     setupmapifneeded(); }  locationlistener onlocationchange=new locationlistener() {     public void onlocationchanged(location location) {         lng = location.getlongitude();         lat = location.getlatitude();     }      public void onproviderdisabled(string provider) {         // required interface, not used     }      public void onproviderenabled(string provider) {         // required interface, not used     }      public void onstatuschanged(string provider, int status,                                 bundle extras) {         // required interface, not used     } };  private void setupmapifneeded() {     // null check confirm have not instantiated map.     if (mmap == null) {         // try obtain map supportmapfragment.         mmap = ((supportmapfragment) getsupportfragmentmanager().findfragmentbyid(r.id.map))                 .getmap();         // check if successful in obtaining map.         if (mmap != null) {             setupmap();         }     } }  private void setupmap() {     mmap.setmaptype(mmap.map_type_hybrid);     mmap.setmylocationenabled(true);     if (lat != 0) {         latlng latlng = new latlng(lat, lng);         mmap.movecamera(cameraupdatefactory.newlatlng(latlng));         mmap.animatecamera(cameraupdatefactory.zoomto(10));         log.d("debug", "succes");     } else {         log.d("debug", "fail");     } }  private void downloadjson(string downloadurl) {     new jsondownloader(this, downloadurl).execute(); }  public void updatephotos(jsonarray result) {     log.d("debug arraylength", "" + result.length());     (int = 0; < result.length(); i++) {         try {             pic_lat = result.getjsonobject(i).getdouble("latitudes");             pic_lng = result.getjsonobject(i).getdouble("longtitudes");             image = result.getjsonobject(i).getstring("images");             mmap.addmarker(new markeroptions().position(new latlng(lat, lng)));         } catch (jsonexception e) {             log.e(mainmap.log_tag, "jsonexception", e);         }     } }  @override public void onclick(view v) {     string downloadurl = "";     switch (v.getid())     {         case r.id.button_popphoto:             downloadurl = "index.php";             break;         case r.id.button_local_position:             downloadurl = "index.php?yourlat=" + lat + "&yourlng=" + lng;             break;     }      downloadjson(downloadurl); } 

}

and jsondownloader:

import android.os.asynctask; import android.util.log;  import org.json.jsonarray; import org.json.jsonexception;  import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstreamreader; import java.net.httpurlconnection; import java.net.url;   public class jsondownloader extends asynctask<void, void, jsonarray> {  private mainmap mm; private string downloadurl = "http://student.cmi.hro.nl/0876538/jaar1/kwartaal3/imp03/huiswerk/week04/opdracht/libs/php/";  public jsondownloader(mainmap mm, string url) {     this.mm = mm;     this.downloadurl = downloadurl + url; }  public jsonarray getphotos() {     jsonarray result = new jsonarray();      httpurlconnection con = null;     log.d(mainmap.log_tag, "getting photos");     try {         log.d(mainmap.log_tag, downloadurl);         url url = new url(downloadurl);         con = (httpurlconnection) url.openconnection();         con.setreadtimeout(10000);         con.setconnecttimeout(15000);         con.setrequestmethod("get");         con.setdoinput(true);         con.connect();          bufferedreader reader = new bufferedreader(                 new inputstreamreader(con.getinputstream(), "utf-8"));         string payload = reader.readline();         reader.close();         result = new jsonarray(payload);      } catch (ioexception e) {         log.e(mainmap.log_tag, "ioexception", e);     } catch (jsonexception e) {         log.e(mainmap.log_tag, "jsonexception", e);     } catch (exception e) {         log.d(mainmap.log_tag, "something went wrong....", e);     } {         if (con != null) {             con.disconnect();         }     }     log.d(mainmap.log_tag, "-> returned: " + result);      return result; }  @override protected jsonarray doinbackground(void... params) {     jsonarray photos = getphotos();     return photos; }  @override protected void onpostexecute(jsonarray result) {     super.onpostexecute(result);      mm.updatephotos(result); } } 


Comments

Popular posts from this blog

node.js - Using Node without global install -

How to access a php class file from PHPFox framework into javascript code written in simple HTML file? -

java - Null response to php query in android, even though php works properly -