地图中的GeoPoint与Google地图显示位置不同

时间:2012-11-19 09:17:44

标签: android location

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

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

                    }
        });

2 个答案:

答案 0 :(得分: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"); 
 }
}

答案 1 :(得分:0)

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

Projection projection = mapView.getProjection(); 

GeoPoint point = new GeoPoint(lat, lng);

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

然后你将在OverlayItem中使用myPoint