0

我有一个主要活动来解析我的 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<Address> 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<Overlay> 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(字段“纬度”和“经度”)获取数据到列表视图中,但现在我想在谷歌地图上显示该数据(纬度和经度),我该怎么做?请帮助我,提前谢谢!

4

1 回答 1

0

你需要从另一个类中获取捆绑包:这个类将是你的 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<earthquakes.length();i++){                        

        JSONObject e = earthquakes.getJSONObject(i);
                lat = e.getString("P_Lat");
        lonng = e.getString("P_Long");

然后将 lat 和 long 转换为一个字符串,如:

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

然后像这样将数据传递到您的地图视图中:

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);
于 2012-07-01T08:55:22.573 回答