作为话题,我目前在瑞典,但在发布我的地图时,它显示我在英国。
我的代码如下所示:
private MapListener myMapViewListener;
private MapController mapController;
private GeoPoint test;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapview);
setupListener();
MapView mapView = (MapView) findViewById(R.id.mapview);
mapController = mapView.getController();
mapView.setBuiltInZoomControls(true);
mapView.setClickable(true);
mapController.setZoom(7); // defualt zoom
}
private void setupListener() {
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
MapListener listener = new MapListener();
MapView mapView = (MapView) findViewById(R.id.mapview);
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
test = new GeoPoint((int)location.getLatitude()*1000000, (int)location.getAltitude()*1000000);
mapController.animateTo(test);
}
@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
}
};
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
}
}
我已添加........
<uses-library android:name="com.google.android.maps" />
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses- permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
</manifest>
.....在我的清单中。
我正在使用http://developer.android.com/guide/topics/location/obtaining-user-location.html作为指南。
非常感谢您的帮助!
答案 0 :(得分:4)
您实际上是在创建错误的地理位置。您在这里设置纬度和海拔高度。
test = new GeoPoint((int)location.getLatitude()*1000000, (int)location.getAltitude()*1000000)
您需要设置纬度和经度
test = new GeoPoint((int)location.getLatitude()*1000000, (int)location.getLongitude()*1000000)
还可以尝试查看MyLocationOverlay类
答案 1 :(得分:3)
它在进行乘法之前转换为int,因此您需要计算周围的parens。 替换为此。
test = new GeoPoint((int)(location.getLatitude()*1000000),
(int)(location.getLongitude()*1000000));
如果您想在地图上绘制自己的位置,也可以查看MyLocationOverlay。
使用MyLocationOverlay。
MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView);
mapView.getOverlays().add(myLocationOverlay);
myLocationOverlay.enableMyLocation();
在暂停时你还应该调用myLocationOverlay.disableMyLocation(),这样当你的活动在后台时它就不会耗尽电池。