0

当我运行该应用程序时,我会得到一张世界地图,您可以在其中看到所有国家/地区。但这不是我想要的,我希望它以我的国家或城市的地图为例。有没有办法做到这一点?到目前为止,这是我的代码。我不认为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”方法中。但是此时,位置为空,即使我尝试在应用程序启动时设置它。谁能看到它为什么为空?当调用 gMap.setMyLocation(true) 时,右上角会出现一个符号,如果我单击它,它将显示我的位置。但我希望它在我单击按钮时执行此操作。

所以问题又是: 1. 如何显示我的国家或城市的地图,而不是世界地图?2. 为什么 Location 为空?3.如何使它在单击按钮时显示我的确切位置

4

1 回答 1

1

1)您可以在片段声明中使用它来设置默认纬度和经度。

  map:cameraTargetLat="Your Latitude"
  map:cameraTargetLng="Your Longitude"

xmlns:map="http://schemas.android.com/apk/res-auto"如果片段不存在,请不要忘记放置片段。

2)来自文档

如果提供程序当前被禁用,则返回 null。

GPS是否开启?此外,您应该使用新的Location API

3) 您的位置的准确性将基于用于获取位置的提供者。使用新的Fused Provider的优点之一是系统将尝试为您获取最佳位置。

于 2013-09-06T14:25:51.790 回答