0

i can pass successfully my location to my web service using php and android java. but the thing is i always have 999.99999 and -999.99999 in both my longitude and latitude. Can you point to me in what part am i having mistakes.

These are my codes:

**

public class LocationGetter extends MapActivity implements LocationListener { // <1>
    private static final String TAG = "LocationActivity";
    LocationManager locationManager; // <2>
    Geocoder geocoder; // <3>
    TextView locationText;
    MapView map;
    MapController mapController; // <4>
    // ** This declarations was for passing of data to web service
    // Progress Dialog
    private ProgressDialog pDialog;
    // JSONParser Object creation
    JSONParser jsonParser = new JSONParser();
    // url to pass location to web
    // private static String url_create_product =
    // "http://student-thesis.netii.net/location_adding.php";
    private static String url_create_product = "http://10.0.2.2/TheCalling/location_adding.php";
    // JSON Node names
    private static final String TAG_SUCCESS = "success";
    //Latitude and Longitude
    private static String ILatitude;
    private static String ILongitude;
    // ** End
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.maps);
        locationText = (TextView) this.findViewById(R.id.lblLocationInfo);
        map = (MapView) this.findViewById(R.id.mapview);
        map.setBuiltInZoomControls(true);
        mapController = map.getController(); // <4>
        mapController.setZoom(19);
        locationManager = (LocationManager) this
                .getSystemService(LOCATION_SERVICE); // <2>
        geocoder = new Geocoder(this); // <3>
        Location location = locationManager
                .getLastKnownLocation(LocationManager.GPS_PROVIDER); // <5>
        if (location != null) {
            Log.d(TAG, location.toString());
            this.onLocationChanged(location); // <6>
        }
    }
    @Override
    protected void onResume() {
        super.onResume();
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                60000, 5, this); // <7>
    }
    @Override
    protected void onPause() {
        super.onPause();
        locationManager.removeUpdates(this); // <8>
    }
    @Override
    public void onLocationChanged(Location location) { // <9>
        Log.d(TAG, "onLocationChanged with location " + location.toString());
        String text = String.format(
                "Lat:\t %f\nLong:\t %f\nAlt:\t %f\nBearing:\t %f \n",
                location.getLatitude(), location.getLongitude(),
                location.getAltitude(), location.getBearing());
        this.locationText.setText(text);
        try {
            List<Address> addresses = geocoder.getFromLocation(
                    location.getLatitude(), location.getLongitude(), 10); // <10>
            for (Address address : addresses) {
                this.locationText.append(" " + address.getAddressLine(0));
            }
            int latitude = (int) (location.getLatitude() * 1000000);
            int longitude = (int) (location.getLongitude() * 1000000);

            GeoPoint point = new GeoPoint(latitude, longitude);
            mapController.animateTo(point); // <11>
            List<Overlay> mapOverlays = map.getOverlays();
            Drawable drawable = this.getResources().getDrawable(
                    R.drawable.reddot);
            AddItemizedOverlay itemizedOverlay = new AddItemizedOverlay(
                    drawable, this);
            OverlayItem overlayitem = new OverlayItem(point, "Hello",
                    "Sample Overlay item");
            itemizedOverlay.addOverlay(overlayitem);
            mapOverlays.add(itemizedOverlay);

            ILatitude = Integer.toString(latitude);
            ILongitude = Integer.toString(longitude);
            new phpconnect().execute();

        } catch (IOException e) {
            Log.e("LocateMe", "Could not get Geocoder data", e);
        }
    }
    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub
    }
    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub
    }
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub
    }
    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }
    class phpconnect extends AsyncTask<String, String, String> {
        @Override
        protected String doInBackground(String... args) {
            String strLatitude = ILatitude;
            String strLongitude = ILongitude;
            // Building parameters
            List<NameValuePair> params1 = new ArrayList<NameValuePair>();
            params1.add(new BasicNameValuePair("latitude", strLatitude));
            params1.add(new BasicNameValuePair("longitude", strLongitude));
            // getting JSON Object
            // Note that create product url accepts POST method
            JSONObject json = jsonParser.makeHttpRequest(url_create_product,
                    "POST", params1);
            // check log cat fro response
            Log.d("Create Response", json.toString());
            try {
                int success = json.getInt(TAG_SUCCESS);
                if (success == 1) {
                    // successfully updated
                } else {
                    // failed to create product
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
}

**

Thank you in advance guys.

well i guess i don't need to post my php codes here, but if you want to check just notify me. :)

4

1 回答 1

0

I'm guessing your numbers are exceeding the bounds of int. Try using BigInteger or perhaps the long primitive type.

于 2013-02-25T02:13:16.060 回答