0

mysqlからのJSONデータを解析するメインアクティビティがあります(テーブル追跡:緯度と経度)次に、このデータをMapActivityに渡して、Googleマップに表示します。どんな助けでも大歓迎です。ありがとう!

これは私の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");

次に、緯度と経度を次のような文字列に変換します。

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 に答える