Карта широты и долготы показывает в море в андроиде? - PullRequest
0 голосов
/ 30 марта 2012

Из фида json я получаю все широту и долготу и добавляю все в mapview.Я получаю разные маркеры. Но все точки показывают в море.это мой кодМожет кто-нибудь помочь мне, пожалуйста

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

}

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

@ harish - вы получаете широту и долготу, такие как 51.509998321533, -0.12999999523163, но в android геопоинт принимает только значения int.Теперь создайте функцию, которая будет принимать эти значения и ограничивать их до 6 десятичных знаков, и вы получите желаемый результат. Функция будет выглядеть как

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

, так вы получите двойное значение, а затем умножите его на 10E6и вы получите int, который вам нужно использовать при создании GeoPoints ..

0 голосов
/ 24 апреля 2012

Я не suere, если это имеет значение, но линия

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

в нижнем регистре имеет строчную букву L

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...