2012-07-05 30 views
1

我在我的android应用程序中有一个谷歌地图,它上面有一个简单的硬编码标记。我有一些保存的数据在经度和纬度的MySQL数据库,我想从MySQL读取数据数据库,然后显示在我的谷歌地图android.I这意味着我怎么可以从我的MySQL数据库data.here我的地图加载地图有简单的硬编码标记的代码。在Android地图上显示来自mysql的分数据库db

更新

package com.javacodegeeks.android.googlemaps; 

import java.util.List; 

import android.graphics.drawable.Drawable; 
import android.os.Bundle; 

import com.google.android.maps.GeoPoint; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapController; 
import com.google.android.maps.MapView; 
import com.google.android.maps.Overlay; 
import com.google.android.maps.OverlayItem; 

import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

//import android.app.ListActivity; 
import android.net.ParseException; 
//import android.os.Bundle; 
import android.util.Log; 
import android.widget.Toast; 



public class GMapsActivity extends MapActivity { 

private MapView mapView; 

JSONArray jArray; 
String result = null; 
InputStream is = null; 
StringBuilder sb=null; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 

mapView = (MapView) findViewById(R.id.map_view);  
     mapView.setBuiltInZoomControls(true); 

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
//http post 
try{ 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("http://sml.com.pk/a/map.php"); 
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
    HttpResponse response = httpclient.execute(httppost); 
    HttpEntity entity = response.getEntity(); 
    is = entity.getContent(); 
    }catch(Exception e){ 
     Log.e("log_tag", "Error in http connection"+e.toString()); 
    } 
//convert response to string 
try{ 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
     sb = new StringBuilder(); 
     sb.append(reader.readLine() + "\n"); 

     String line="0"; 
     while ((line = reader.readLine()) != null) { 
         sb.append(line + "\n"); 
     } 
     is.close(); 
     result=sb.toString(); 
     }catch(Exception e){ 
       Log.e("log_tag", "Error converting result "+e.toString()); 
     } 
//paring data 
double LAT; 
double LANG; 
String INFO; 
try{ 
     jArray = new JSONArray(result); 
     JSONObject json_data=null; 
     for(int i=0;i<jArray.length();i++){ 
      json_data = jArray.getJSONObject(i); 
      LAT=json_data.getDouble("LAT"); 
      LANG=json_data.getDouble("LANG"); 
      INFO=json_data.getString("INFO"); 


//Overlay code 
List<Overlay> mapOverlays = mapView.getOverlays(); 
       Drawable drawable = this.getResources().getDrawable(R.drawable.icon); 
     CustomItemizedOverlay itemizedOverlay = new CustomItemizedOverlay(drawable, this); 

     //GeoPoint point = new GeoPoint(latitudeE6, longitudeE6); 
     GeoPoint point = new GeoPoint((int)(LAT * 1e6),(int)(LANG * 1e6)); 
     OverlayItem overlayitem = new OverlayItem(point, "", INFO); 
     itemizedOverlay.addOverlay(overlayitem); 
     mapOverlays.add(itemizedOverlay); 

     MapController mapController = mapView.getController(); 

     mapController.animateTo(point); 
     mapController.setZoom(6); 

//Overlay code 

     } 
     } 
     catch(JSONException e1){ 
      Toast.makeText(getBaseContext(), "No City Found" ,Toast.LENGTH_LONG).show(); 
     } catch (ParseException e1) { 
      e1.printStackTrace(); 
    } 
} 
@Override 
protected boolean isRouteDisplayed() { 
    return false; 
} 
} 
+0

只需通过这个[链接](https://developers.google.com/图/文章/ phpsqlsearch_v3)。它是Google Developers提供的一个非常好的教程。希望这可以帮助你。 – Scorpion

回答

0

你可以做到这一点

ArrayList<Data> dynamicData=getData(); 
    if(dynamicData!=null) 
    { 
     for(int i=0;i<dynamicData.size();i++) 
     { 
      Drawable drawable = this.getResources().getDrawable(R.drawable.icon); 
      CustomItemizedOverlay itemizedOverlay = new CustomItemizedOverlay(drawable, this); 

      //GeoPoint point = new GeoPoint(latitudeE6, longitudeE6); 
      GeoPoint point = new GeoPoint((int)(Double.parseDouble(dynamicData.get(i).lat) * 1e6),(int)(Double.parseDouble(dynamicData.get(i).lon) * 1e6)); 
      OverlayItem overlayitem = new OverlayItem(point, "SML", "Shakarganj Mills Limited Jhang"); 

      itemizedOverlay.addOverlay(overlayitem); 
      mapOverlays.add(itemizedOverlay); 
     } 
    } 

public static ArrayList<MapData> getData() { 
    try { 

     String URL = "http://sml.com.pk/a/map.php"; 
     HttpParams httpparams = new BasicHttpParams(); 

     SchemeRegistry registry = new SchemeRegistry(); 
     registry.register(new Scheme("http", new PlainSocketFactory(), 80)); 

     DefaultHttpClient client = new DefaultHttpClient(
       new ThreadSafeClientConnManager(httpparams, registry), 
       httpparams); 

     HttpGet httpGet = new HttpGet(URL); 

     HttpResponse response = client.execute(httpGet); 
     String string_response = EntityUtils.toString(response.getEntity(), 
       "UTF-8"); 
     JSONArray JsonResponse; 
     try { 
      JsonResponse = new JSONArray(string_response); 

      ArrayList<MapData> list = new ArrayList<MapData>(); 
      for (int i = 0; i < JsonResponse.length(); i++) { 
       String GPS = JsonResponse.getJSONObject(i).getString("GPS"); 
       String temp[] = GPS.split(","); 
       MapData apoint = new MapData(); 
       apoint.lat = temp[0]; 
       apoint.lon = temp[1]; 
       list.add(apoint); 

      } 
      return list; 
     } catch (JSONException e) { 
      e.printStackTrace(); 
      return null; 
     } 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
     return null; 
    } catch (IOException e) { 

     e.printStackTrace(); 
     return null; 

    } 


} 

public static class MapData { 
     public String lat; 
     public String lon; 
    } 
+0

主席先生,我同意你的意见,但我已经自己奋斗,并在我的更新中显示,如果有任何逻辑错误或未来可能会出现错误,请检查我当前的代码。此外,我的地图按我的愿望工作在我的问题 – user1495028

相关问题