2011-11-18 107 views
0

這是我的MapActivity類,它應該從字符串中讀取地址,將其反轉爲經度&緯度並使用標記在地圖上顯示地址。Android:未輸入反向地理編碼的輸入地址

段:

Geocoder geoCoder = new Geocoder(this, Locale.getDefault()); 
try { 
     List<Address> addresses = geoCoder.getFromLocationName(
          getString(R.string.address), 5); 
        String add = ""; 
        if (addresses.size() > 0) { 
         p = new GeoPoint(
           (int) (addresses.get(0).getLatitude() * 1E6), 
           (int) (addresses.get(0).getLongitude() * 1E6)); 
         mc.animateTo(p); 
         mc.setZoom(17); 

         MapOverlay mapOverlay = new MapOverlay(); 
         List<Overlay> listOfOverlays = mapView.getOverlays(); 
         listOfOverlays.clear(); 
         listOfOverlays.add(mapOverlay); 

         mapView.invalidate(); 

        }  
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

不知怎的,這是行不通的,它不會顯示給定的地址和沒有標記。 任何人都可以看到我的錯誤在哪裏?

全班:

public class NewMapsActivity extends MapActivity 
    {  

     protected boolean isRouteDisplayed() { 
      return false; 
     } 

     private MapView myMap; 
     private Geocoder gc; 
     private double lat; 
     private double lon; 
     MapView mapView; 
     MapController mc; 
     GeoPoint p; 


     class MapOverlay 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); 

       //---add the marker--- 
       Bitmap bmp = BitmapFactory.decodeResource(
        getResources(), R.drawable.pushpin);    
       canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);   
       return true; 
      } 
     } 

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

      mapView = (MapView) findViewById(R.id.mapView); 
      LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom); 
      View zoomView = mapView.getZoomControls(); 

      zoomLayout.addView(zoomView, 
       new LinearLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, 
        LayoutParams.WRAP_CONTENT)); 
      mapView.displayZoomControls(true); 


      mc = mapView.getController(); 

      Geocoder geoCoder = new Geocoder(this, Locale.getDefault());  
      try { 
       List<Address> addresses = geoCoder.getFromLocationName(
         getString(R.string.address), 5); 
       String add = ""; 
       if (addresses.size() > 0) { 
        p = new GeoPoint(
          (int) (addresses.get(0).getLatitude() * 1E6), 
          (int) (addresses.get(0).getLongitude() * 1E6)); 
        mc.animateTo(p); 
        mc.setZoom(17); 

        MapOverlay mapOverlay = new MapOverlay(); 
        List<Overlay> listOfOverlays = mapView.getOverlays(); 
        listOfOverlays.clear(); 
        listOfOverlays.add(mapOverlay); 

        mapView.invalidate(); 

       }  
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
+0

你LAT得到正確的,從長久的地址? – user370305

+0

問題解決了,它在我的手機上工作,問題出現在模擬器上 – hectichavana

回答

0

問題解決了,它的工作我的手機上的問題,只是在模擬器上