harish
harish

Reputation: 1765

Map latitude and longitude is showing in sea in android?

From a json feed am getting all the latitude and longitude and adding all in mapview. Am gettin different markers.but all the points are showing in sea. this is my code. can anyone help me please

MapItemizedOverlay itemizedoverlay;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map);

    url = "http://dentonsweb.com/app/html/android/get.php?what=Hotels&lat=51.507222&lon=-0.1275&pg=0";
    System.out.println("url is "+url);
    Jsonfunctions jParser = new Jsonfunctions();
    JSONObject json = jParser.getJSONFromUrl(url);
    try {
        // Getting Array of Contacts
        results = json.getJSONArray(TAG_RESULTS);

        // looping through All Contacts
        for (int i = 0; i < results.length(); i++) {
            JSONObject c = results.getJSONObject(i);

            id = c.getString(TAG_ID);
            name = c.getString(TAG_NAME);
            System.out.println("name is " + name);
            adress = c.getString(TAG_ADRRESS);
            latitude = c.getString(TAG_LATITUDE);
            latitudeAry.add(c.getString(TAG_LATITUDE).toString());
            longitude = c.getString(TAG_lONGITUDE);
            latitudeAry.add(c.getString(TAG_lONGITUDE).toString());
            distance = c.getString(TAG_DISTANCE);
            image = c.getString(TAG_IMAGE);
            phone = c.getString(TAG_TELEPHONE);
            telphonenumberAry
                    .add(c.getString(TAG_TELEPHONE).toString());
            NameAry.add(c.getString(TAG_NAME).toString());
            resourceAry.add(new ResourceClass(point,id, name, adress,image,
                    distance, latitude, longitude, phone));
            System.out.println("arraooosdospodpsodps  " + resourceAry);
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

    mapView = (MapView) findViewById(R.id.mapView);
    mapView.setBuiltInZoomControls(true);
    mapView.setSatellite(false);
    mc = mapView.getController();
    listOfOverlays = mapView.getOverlays();
    drawable = this.getResources().getDrawable(
            R.drawable.pin);
    itemizedoverlay = new MapItemizedOverlay(drawable,mapView);
    for (int i = 0; i < resourceAry.size(); i++) {
        // latitude = resourceAry.get(i).getLatitude();
         System.out.println("latitude is " + latitude);
         String latitude = resourceAry.get(i).getLatitude();
         String longitude = resourceAry.get(i).getLongitude();
        // longitude = resourceAry.get(i).getLongitude();
         String name = resourceAry.get(i).getName();
         System.out.println("Name is" + name);
         String adress = resourceAry.get(i).getAdress();

        if (!latitude.equals("") && !longitude.equals("")) {
            Double latitude_next = Double.parseDouble(latitude);
            Double longitude_next = Double.parseDouble(longitude);

            point = new GeoPoint((int) (latitude_next * 1E6),
                    (int) (longitude_next * 1E6));
            System.out.println("point is " + point);

            overlayitem = new OverlayItem(point,resourceAry.get(i).getName(),resourceAry.get(i).getAdress());
            // System.out.println( " spanned text: " +
            // Html.fromHtml(Texte));

            itemizedoverlay.addOverlay(overlayitem);
            listOfOverlays.add(itemizedoverlay);
        }
    }
    mc.animateTo(point);
    mc.setZoom(13);
}
@Override
protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
}

}

Upvotes: 0

Views: 548

Answers (2)

dreamrunner
dreamrunner

Reputation: 1

I am not suere if it makes a difference but the line

latitudeAry.add(c.getString(TAG_lONGITUDE).toString());

has a lowercase L in lONGITUDE

Upvotes: 0

Sandip Jadhav
Sandip Jadhav

Reputation: 7165

@harish -- You get latitude & longitudes like 51.509998321533,-0.12999999523163 but in android geopoint accepts only int values. now create a function which will take these values & restric them upto 6 decimal points & you will get result as you wanted Function will be like

 double roundTwoDecimals(double d){
      DecimalFormat twoDForm = new DecimalFormat("#.######");
      return Double.valueOf(twoDForm.format(d));
  }

this way you will get double value & then multiply it with 10E6 & you will get int which you need to use in creating GeoPoints..

Upvotes: 2

Related Questions