如何在地图上放置JSON lOutput(纬度和经度)

我有一个主要的活动来解析我的mysql中的JSON数据(表跟踪:纬度和经度)现在我想将这些数据传递给我的MapActivity并显示在谷歌地图上。 任何帮助都非常感谢。 谢谢!

这是我的JSONactivity

public class JSONActivity extends Activity{ private JSONObject jObject; private String xResult =""; //Seusuaikan url dengan nama domain private String url = "http://10.0.2.2/labiltrack/daftartracking.php"; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.daftartrack); TextView txtResult = (TextView)findViewById(R.id.TextViewResult); //url += "?lattitude=" + UserData.getEmail(); xResult = getRequest(url); try { parse(txtResult); } catch (Exception e) { e.printStackTrace(); } } private void parse(TextView txtResult) throws Exception { // TODO Auto-generated method stub jObject = new JSONObject(xResult); JSONArray menuitemArray = jObject.getJSONArray("joel"); String sret=""; //int j = 0; for (int i = 0; i < menuitemArray.length(); i++) { sret +=menuitemArray.getJSONObject(i). getString("lattitude").toString()+" : "; System.out.println(menuitemArray.getJSONObject(i) .getString("lattitude").toString()); System.out.println(menuitemArray.getJSONObject(i).getString( "longitude").toString()); sret +=menuitemArray.getJSONObject(i).getString( "lattitude").toString()+"\n"; //j=i; }txtResult.setText(sret); } /** * Method untuk Mengirimkan data keserver * event by button login diklik * * @param view */ private String getRequest(String url) { // TODO Auto-generated method stub String sret=""; HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(url); try{ HttpResponse response = client.execute(request); sret =request(response); }catch(Exception ex){ Toast.makeText(this,"jo "+sret, Toast.LENGTH_SHORT).show(); } return sret; } /** * Method untuk Menenrima data dari server * @param response * @return */ private String request(HttpResponse response) { // TODO Auto-generated method stub String result = ""; try{ InputStream in = response.getEntity().getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuilder str = new StringBuilder(); String line = null; while((line = reader.readLine()) != null){ str.append(line + "\n"); } in.close(); result = str.toString(); }catch(Exception ex){ result = "Error"; } return result; } } 

这是我的mapActivity

 public class mapactivity extends MapActivity { private MapView mapView; MapController mc; GeoPoint p; //private MyLocationOverlay me = null; class MapOverlays extends com.google.android.maps.Overlay { @Override public boolean draw (Canvas canvas, MapView mapView, boolean shadow, long when) { super.draw(canvas, mapView, shadow); //translate the geopoint to screen pixels Point screenPts = new Point(); mapView.getProjection().toPixels(p, screenPts); //tambah marker Bitmap bmp = BitmapFactory.decodeResource(getResources (), R.drawable.pin_red); canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null); //mapView.setSatellite(true); return true; } @Override public boolean onTouchEvent(MotionEvent event, MapView mapView) { //---when user lifts his finger--- if (event.getAction() == 1) { GeoPoint p = mapView.getProjection().fromPixels( (int) event.getX(), (int) event.getY()); Toast.makeText(getBaseContext(), p.getLatitudeE6() / 1E6 + "," + p.getLongitudeE6() /1E6 , Toast.LENGTH_SHORT).show(); mc.animateTo(p); //geocoding Geocoder geoCoder = new Geocoder( getBaseContext(), Locale.getDefault()); try { List
addresses = geoCoder.getFromLocation( p.getLatitudeE6() / 1E6, p.getLongitudeE6() / 1E6, 1); String add = ""; if (addresses.size() > 0) { for (int i=0; i<addresses.get(0).getMaxAddressLineIndex(); i++) add += addresses.get(0).getAddressLine(i) + "\n"; } Toast.makeText(getBaseContext(), add, Toast.LENGTH_SHORT).show(); } catch (IOException e) { e.printStackTrace(); } return true; } else return false; } } /** Called when the activity is first created. */ @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mapview1); //utk mnampilkan zoom mapView = (MapView) findViewById(R.id.mapView); LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom); View zoomView = mapView.getZoomControls(); zoomLayout.addView(zoomView, new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); mapView.displayZoomControls(true); //menampilkan default peta banda aceh mc = mapView.getController(); String coordinates[] = {"5.550381", "95.318699"}; double lat = Double.parseDouble(coordinates[0]); double lng = Double.parseDouble(coordinates[1]); p = new GeoPoint( (int) (lat * 1E6), (int) (lng * 1E6)); mc.animateTo(p); mc.setZoom(14); mapView.invalidate(); //tambah marker MapOverlays mapOverlay = new MapOverlays(); List listOfOverlays = mapView.getOverlays(); listOfOverlays.clear(); listOfOverlays.add(mapOverlay); mapView.invalidate(); } public void btnSatelitClick(View v){ mapView.setSatellite(true); mapView.setStreetView(false); } public void btnjalanClick (View v){ mapView.setSatellite(false); mapView.setStreetView(true); } protected boolean isRouteDisplayed() { //auto generate method return false; } }

我的jsonactivity是从mysql(字段“纬度”和“经度”)获取数据到listview,但现在我想在谷歌地图上显示该数据(纬度和经度),我怎么能这样做? 请帮帮我,提前谢谢!

您需要从另一个类获取bundle:此类将用于mapActivity

 Bundle b = getIntent().getExtras(); // Getting the Bundle object that pass from another activity int SelectedPropertylat = b.getInt("SelectedLat"); int SelectedPropertylong = b.getInt("SelectedLong"); String lattitude = Integer.toString(SelectedPropertylat); String longertude = Integer.toString(SelectedPropertylong); Log.d(lattitude,longertude); 

将mysql中的数据导入您的应用程序使用:

 try{ JSONArray earthquakes = json.getJSONArray("PropertyDetails"); for(int i=0;i 

然后将lat和long转换为如下字符串:

 lonnng = Integer.parseInt(lonng.toString()); latt =Integer.parseInt(lat.toString()); 

然后将数据传递到mapview,如下所示:

 Intent moreDetailsIntent = new Intent(PropertiesDetails.this,mapActivity .class); Bundle dataBundle = new Bundle(); dataBundle.putInt("SelectedLong",lonnng); dataBundle.putInt("SelectedLat", latt); moreDetailsIntent.putExtras(dataBundle); startActivity(moreDetailsIntent);