当我运行应用程序时,我会看到世界地图,您可以在其中查看所有国家/地区。但这不是我想要的,我希望它以我的国家或城市的地图为例。有没有办法做到这一点?到目前为止这是我的代码。我认为xml代码不应该是必需的吗?
public class MainActivity extends Activity {
private GoogleMap gMap;
private LocationManager locationManager;
private Location location, g;
private double lati, longi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
// gMap.setMyLocationEnabled(true);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
System.out.println("Last known location: " + location);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void showUsersPosition(View v) {
gMap.setMyLocationEnabled(true);
if(location != null) {
lati = location.getLatitude();
longi = location.getLongitude();
}
gMap.addMarker(new MarkerOptions().position(new LatLng(lati, longi)).title("You are here"));
}
}
我还添加了一个按钮,我想在单击此按钮时显示用户位置。这发生在方法“showUsersPosition”中。但此时,位置为空,即使我尝试在应用程序启动时设置它。任何人都可以看到为什么它是null?当调用gMap.setMyLocation(true)时,右下角会出现一个symbole,如果我点击它,它会显示我的位置。但我希望它能在单击按钮时执行此操作。
所以问题又是: 1.如何显示我的国家或城市的地图,而不是世界地图? 2.为什么位置无效? 3.如何在单击按钮时显示我的确切位置
答案 0 :(得分:1)
1) 您可以在片段声明中使用它来设置默认的纬度和经度。
map:cameraTargetLat="Your Latitude"
map:cameraTargetLng="Your Longitude"
如果片段不存在,请不要忘记放置xmlns:map="http://schemas.android.com/apk/res-auto"
。
2)来自docs:
如果当前禁用了提供程序,则返回null。
GPS是否开启?此外,您应该使用新的Location API。
3)您的位置的准确性将基于用于获取位置的提供商。使用新Fused Provider的一个优点是系统会尝试为您提供最佳位置。