2012-03-30 118 views
0

从json feed获取所有纬度和经度并在mapview中添加所有内容。我开了不同的标记,但所有的点都显示在海中。这是我的代码。谁能帮助我,请地图纬度和经度在android中显示在海中?

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

@harish - 你得到纬度经度&像51.509998321533,-0.12999999523163 但是在android系统的GeoPoint只接受int类型。 现在创造将采取这些值& restric他们最多6个小数点&你会得到结果,你想 功能就会像

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

这种方式,您将得到双重价值&然后用10E6乘以它的功能&你会得到INT,你需要创建GeoPoints使用..

+0

@ sandip没有得到 – harish 2012-03-30 08:21:15

+1

@harish - GeoPoint构造函数只接受int对吗?现在你知道整数限制吗?如果您采用6位以上的小数点,它将与int限制交叉,因此地图上的地理位置显示在错误的位置。你有没有试过我建议的? &isi t working? – 2012-03-30 09:01:18

0

,如果它有差别,但行了,我不suere

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

在longITUDE中有一个小写的L

相关问题