2012-04-04 207 views
0

上MapView的坐标如果我的JSON是格式的如下面给出的用于与其地址和纬度/经度加载通过JSON

[{"StoreId":"50","StoreTitle":"Pocket 

Docket","StoreLogo":"","StoreTradingName":"Pocket 

Docket","StoreWebsite":"http:\/ 

\/pocketdocket.com.au","Address":{"Address1":"367 

","Address2":"George 

St.","City":"Sydney","State":"NSW","ZipCode":"2000","Longitude" 

:"151.2284339","Latitude":"- 

33.5487607","AreaCode":"2000","Phone":"0280839400"}, 

和我的mapactivity类商店显示与如下

public class MapActivity extends com.google.android.maps.MapActivity { 
MapView mapView; 
private LocationManager mylocmng; 
private LocationListener myloclist; 
private MapController mympctrl; 

private void CenterLocation(GeoPoint centrGeopt){ 
    mympctrl.animateTo(centrGeopt); 
    //Remove title bar 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
}; 
public void onCreate(Bundle savedInstanceState){ 




    super.onCreate(savedInstanceState); 
    setContentView(R.layout.map); 

    mapView=(MapView)findViewById(R.id.mv); 
    //mapView.setSatellite(true); 
    mapView.setStreetView(true); 
    mapView.setBuiltInZoomControls(true); 
    mympctrl = mapView.getController(); 
    mympctrl.setZoom(8); 
    mylocmng=(LocationManager)getSystemService(Context.LOCATION_SERVICE); 
    myloclist=new MyLocationListener(); 
    mylocmng.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,myloclist); 
    Drawable marker=getResources().getDrawable(android.R.drawable.star_big_on); 
    int markerWidth = marker.getIntrinsicWidth(); 
    int markerHeight = marker.getIntrinsicHeight(); 
    marker.setBounds(0, markerHeight, markerWidth, 0); 
    LocationOverlay myItemizedOverlay = new LocationOverlay(marker); 
    mapView.getOverlays().add(myItemizedOverlay); 

    /* GeoPoint myPoint1 = new GeoPoint(0*1000000, 0*1000000); 
    myItemizedOverlay.addItem(myPoint1, "myPoint1", "myPoint1"); 
    GeoPoint myPoint2 = new GeoPoint(50*1000000, 50*1000000); 
    myItemizedOverlay.addItem(myPoint2, "myPoint2", "myPoint2"); 
    //Get the current location in start-up 
     GeoPoint initGeoPoint = new GeoPoint(
     (int)(mylocmng.getLastKnownLocation(
     LocationManager.GPS_PROVIDER) 
     .getLatitude()*1000000), 
     (int)(mylocmng.getLastKnownLocation(
     LocationManager.GPS_PROVIDER) 
     .getLongitude()*1000000)); 
     CenterLocation(initGeoPoint);*/ 



     ImageButton bcknrby=(ImageButton)findViewById(R.id.nearbybuttn); 
     bcknrby.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent myint = new Intent(MapActivity.this,NearBy.class); 
       startActivity(myint); 
      } 

     }); 
    } 
private class MyLocationListener implements LocationListener{ 

    @Override 
    public void onLocationChanged(Location argLocation) { 
     // TODO Auto-generated method stub 
     Drawable marker=getResources().getDrawable(android.R.drawable.star_big_on); 
     int markerWidth = marker.getIntrinsicWidth(); 
     int markerHeight = marker.getIntrinsicHeight(); 
     marker.setBounds(0, markerHeight, markerWidth, 0); 
     LocationOverlay myItemizedOverlay = new LocationOverlay(marker); 
     mapView.getOverlays().add(myItemizedOverlay); 
     GeoPoint myGeoPoint = new GeoPoint(
       (int)(argLocation.getLatitude()*1000000), 
       (int)(argLocation.getLongitude()*1000000)); 
       myItemizedOverlay.addItem(myGeoPoint,"myPoint1", "myPoint2"); 
       CenterLocation(myGeoPoint); 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     // TODO Auto-generated method stub 
     Toast.makeText(getApplicationContext(), "Gps Disabled", Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     // TODO Auto-generated method stub 
     Toast.makeText(getApplicationContext(), "Gps Enabled", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     // TODO Auto-generated method stub 

    }} 





@Override 
protected boolean isRouteDisplayed() { 
    return false; 
} 

}

如何装入从JSON的坐标的MapView ????? 任何帮助将不胜感激。

这是我分析

try{JSONArray myID=j2.getJSONArray("stores"); 
     for(int i=0;i<myID.length();i++){ 
      Log.v("state","json address being read"); 
      JSONObject j3= myID.getJSONObject(i); 
      String name = j3.getString("Address"); 

      Log.v("Address",name); 

回答

2

你可以了解JSON从这些链接解析描述。这些链接中显示的非常简单的示例。

http://www.technotalkative.com/android-json-parsing/

http://www.androidcompetencycenter.com/2009/10/json-parsing-in-android/

http://www.androidhive.info/2012/01/android-json-parsing-tutorial/

您可以通过解析JSON获取经纬度,然后简单的通过这些值您GeoPoint myGeoPoint

编辑

String str = "{\"error\":false,\"totalresults\":6,\"stores\":" +    
       "[{" + 
       "\"StoreId\":\"50\",\"StoreTitle\":\"Pocket Docket\",\"StoreLogo\":\"\",\"StoreTradingName\":\"Pocket Docket\"," + 
       "\"StoreWebsite\":\"http:\\\\pocketdocket.com.au\"," + 
       "\"Address\":" + 
       "{\"Address1\":\"367 \",\"Address2\":\"George St.\"," + 
       "\"City\":\"Sydney\",\"State\":\"NSW\",\"ZipCode\":\"2000\",\"Longitude\":\"151.2284339\",\"Latitude\":\"-33.5487607\"," + 
       "\"AreaCode\":\"2000\",\"Phone\":\"0280839400\"}}]}"; 

     try 
     { 
      jsonObject = new JSONObject(str); 
      JSONArray arr_start = jsonObject.getJSONArray("stores"); 
       JSONObject obj_arr = arr_start.getJSONObject(0); 
       JSONObject arr_address = obj_arr.getJSONObject("Address"); 
       String lat = arr_address.getString("Latitude"); 
       String Longi = arr_address.getString("Longitude"); 
     } 
     catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

希望这将帮助你不要忘了接受它,如果它是对您有所帮助。

谢谢...

+0

并将这项工作,如果我需要解析多个坐标? – 2012-04-05 05:15:16

+0

@Aalok Sharma,当然是,对于多个坐标,你需要一个数组来存储数值。如果您有任何问题,您可以随时询问。 – 2012-04-05 05:20:20

+0

好吧我已经通过jsonarray> object> string成功解析了“Storetitle”,但是当谈到解析“Address”值时,它显示了解析json异常的错误,我在做什么错误 – 2012-04-09 10:24:47