0

我使用 LocationManager 来获取位置。然后将位置转换为 GeoPoint 并在地图中显示。为什么它与谷歌地图显示位置如此不同?这是获取位置的方法:

mLocationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(true);
        criteria.setPowerRequirement(Criteria.POWER_LOW);
        final String strLocationProvider = mLocationManager.getBestProvider(criteria, true);
 mLocationManager.requestLocationUpdates(strLocationProvider, 1000, 0, 
                new LocationListener(){

                    @Override
                    public void onLocationChanged(Location location) {
                        // TODO Auto-generated method stub
                        double geoLatitude = mLocation.getLatitude()*1E6;
            double geoLongitude = mLocation.getLongitude()*1E6;
            GeoPoint currentGeoPoint = new GeoPoint((int)geoLatitude,(int)geoLongitude);
            mapCon.animateTo(currentGeoPoint);                  }

                    @Override
                    public void onProviderDisabled(String provider) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onProviderEnabled(String provider) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onStatusChanged(String provider, int status,
                            Bundle extras) {
                        // TODO Auto-generated method stub

                    }
        });
4

2 回答 2

1

尝试这个。

LocationListener locationListener = new LocationListener() {
     public void onLocationChanged(Location location) {      
     int lat = (int) (location.getLatitude() * 1E6);
     int lng = (int) (location.getLongitude() * 1E6);
     GeoPoint point = new GeoPoint(lat, lng);
     OverlayItem overlayitem4 = new OverlayItem(point, "You Are Here", "Boulder, CO"); 
 }
}
于 2012-11-19T09:23:06.530 回答
0

您可以使用投影在地理点和地图上的点之间进行转换。

Projection projection = mapView.getProjection(); 

GeoPoint point = new GeoPoint(lat, lng);

Point myPoint = new Point();
projection.toPixels(point, myPoint);

然后你会在你的 OverlayItem 中使用 myPoint

于 2012-11-19T09:51:06.440 回答