1

Possible Duplicate:
How to put JSON lOutput (latitude and longitude) on the map

I have a main activity which parses the JSON data from my mysql (table tracking:Lattitude and longitude) Now I want to pass this data in to my MapActivity and display on google maps. Any help is highly appreciated. Thanks!

this my 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;
    }
}

and this my 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;
            }

  }
Community
  • 1
  • 1
joe Kifli
  • 11
  • 3

1 Answers1

0

as you have only to variable to pass so use intent and pass the data ......and i think you have rest of code writen

put in the JSONActivity from where you want to open mapActivity and you alos have the variable latitude and longitude with their values

Intent i= new Intent(getApplicationContext(), mapActivity.class);
i.putExtra("lattitude",lattitude);
i.putExtra("longitude",longitude);
startActivity(i);

Then in the new activity mapActivity, retrieve those values:

inplace of this put String coordinates[] = {"5.550381", "95.318699"};

 Bundle extras = getIntent().getExtras();
  if(extras !=null) {
    String lattitude= extras.getString("lattitude");
    String longitude= extras.getString("longitude");

     double lat = Double.parseDouble(lattitude);
    double lng = Double.parseDouble(longitude);

}
Dheeresh Singh
  • 15,446
  • 3
  • 35
  • 36