2011-06-26 53 views
0

我有HTC的願望,並且正在嘗試編寫應用程序來顯示我的當前位置。Android,街景無法正確顯示在我的設備上HTC Desire

我已經設法編寫應用程序並顯示我在哪裏。但我只能在衛星視圖中看到我的位置。當我嘗試只獲得streetView時,地圖顯示爲空白,並且根本沒有顯示任何街道。

這是我試圖用來獲取streetView來顯示的代碼。

public class FindMeInMap extends MapActivity { 

@Override 
    protected boolean isRouteDisplayed() { 
    return false; 
    } 

    MapController mapController; 
    MyPositionOverlay positionOverlay; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    MapView myMapView = (MapView)findViewById(R.id.theMapView); 
    myMapView.displayZoomControls(true); 
    myMapView.setBuiltInZoomControls(true); 
    mapController = myMapView.getController(); 

    myMapView.setSatellite(false); 
    myMapView.setStreetView(true); 
    myMapView.displayZoomControls(true); 
    myMapView.setTraffic(true); 





    // Add the MyPositionOverlay 
    positionOverlay = new MyPositionOverlay(); 
    List<Overlay> overlays = myMapView.getOverlays(); 
    overlays.add(positionOverlay); 

    LocationManager locationManager; 
    String context = Context.LOCATION_SERVICE; 
    locationManager = (LocationManager)getSystemService(context); 

    Criteria criteria = new Criteria(); 
    criteria.setAccuracy(Criteria.ACCURACY_FINE); 
    criteria.setAltitudeRequired(false); 
    criteria.setBearingRequired(false); 
    criteria.setCostAllowed(true); 
    criteria.setPowerRequirement(Criteria.POWER_LOW); 
    String provider = locationManager.getBestProvider(criteria, true); 

    Location location = locationManager.getLastKnownLocation(provider); 

    updateWithNewLocation(location); 

    locationManager.requestLocationUpdates(provider, 2000, 10, 
              locationListener); 
    } 

    private final LocationListener locationListener = new LocationListener() { 
    public void onLocationChanged(Location location) { 
     updateWithNewLocation(location); 
    } 

    public void onProviderDisabled(String provider){ 
     updateWithNewLocation(null); 
    } 

    public void onProviderEnabled(String provider){ } 
    public void onStatusChanged(String provider, int status, 
           Bundle extras){ } 
    }; 

    private void updateWithNewLocation(Location location) { 
    String latLongString; 
    TextView myLocationText; 
    myLocationText = (TextView)findViewById(R.id.myLocationText); 
    String addressString = "No address found"; 

    if (location != null) { 
     // Update my location marker 
     positionOverlay.setLocation(location); 

     // Update the map location. 
     Double geoLat = location.getLatitude()*1E6; 
     Double geoLng = location.getLongitude()*1E6; 
     GeoPoint point = new GeoPoint(geoLat.intValue(), 
            geoLng.intValue()); 

     mapController.animateTo(point); 
     mapController.setZoom(17); 


     double lat = location.getLatitude(); 
     double lng = location.getLongitude(); 
     latLongString = "Lat:" + lat + "\nLong:" + lng; 

     double latitude = location.getLatitude(); 
     double longitude = location.getLongitude(); 

     Geocoder gc = new Geocoder(this, Locale.getDefault()); 
     try { 
     List<Address> addresses = gc.getFromLocation(latitude, 
                longitude, 1); 
     StringBuilder sb = new StringBuilder(); 
     if (addresses.size() > 0) { 
      Address address = addresses.get(0); 

      for (int i = 0; i < address.getMaxAddressLineIndex(); i++) 
      sb.append(address.getAddressLine(i)).append("\n"); 

      sb.append(address.getLocality()).append("\n"); 
      sb.append(address.getPostalCode()).append("\n"); 
      sb.append(address.getCountryName()); 
     } 
     addressString = sb.toString(); 
     } catch (IOException e) {} 
    } else { 
     latLongString = "No location found"; 
    } 
    myLocationText.setText("Your Current Position is:\n" + 
          latLongString + "\n" + addressString); 
    } 
} 

任何人都可以發現我的問題,並告訴我爲什麼我不能看到我的慾望工作?我在模擬器上嘗試了相同的代碼,它工作正常,只是不在電話中?!?

在此先感謝!

+0

做u得到任何解決方案......那麼請告訴我,因爲我提前得到同樣的問題.....感謝... –

回答

0

做以下修改:

myMapView.setSatellite(false); 
myMapView.setStreetView(true); 
myMapView.setBuiltInZoomControls(true); 
myMapView.postInvalidate(); 
相關問題