我在地下室使用我的模拟器。此代码正在运行。但地图未显示当前位置。我还尝试从模拟器控件发送lat long,但模拟器控件显示错误的lat lon。
package com.maps;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView view= (MapView) findViewById(R.id.mapView) ;
view.setBuiltInZoomControls(true);
final MapController control=view.getController();
LocationManager manager=(LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
LocationListener listener=new LocationListener() {
public void onStatusChanged(String provider, int status, Bundle extras) {
}
public void onProviderEnabled(String provider) {
}
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
};
manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener);
}
@Override
protected boolean isRouteDisplayed()
{
return true;
}
}
答案 0 :(得分:1)
要获取GPS,您必须在启动应用程序时首次进入开放区域。地下室是完全覆盖的区域,因此像移动设备这样的GPS硬件很难获取GPS位置。然而,汽车中的GPS硬件也可以从地下室获取GPS信号。
此要求的替代方法是获取 cell-id 并将其传递给google的反向Api,这会在结果中为您提供lat-lon。你可以从任何地方获得cell-id,你也可以看到你在地下室也有覆盖。您还可以访问我最近的answer,了解有关仿真器中GPS的详细信息。您也可以从here
下载示例GPX文件答案 1 :(得分:0)
您可能尚未向应用程序授予Access Mock Location权限。
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION">