开发者

Android,StreetView not showing correctly on my device Htc Desire

开发者 https://www.devze.com 2023-03-15 23:01 出处:网络
I have an HTC desire and am trying to write an app to show my current location. I have managed to write the app and to show where I am. But I am only able to see my location in satelite view. When I

I have an HTC desire and am trying to write an app to show my current location.

I have managed to write the app and to show where I am. But I am only able to see my location in satelite view. When I try and only get the streetView the map appears blank and there are no streets shown at all.

Here is the code that I am trying to use for getting the streetView to show.

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
开发者_JAVA技巧    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);
  }
}

Can anyone spot my problem and tell me why I cannot see this working on my Desire? I tried the same code on the emulator and it works fine, just not on the phone ?!?

Thanks in Advance!


Make the following changes:

myMapView.setSatellite(false);
myMapView.setStreetView(true);
myMapView.setBuiltInZoomControls(true);
myMapView.postInvalidate();
0

精彩评论

暂无评论...
验证码 换一张
取 消