没有显示所需的地图

时间:2013-09-06 14:02:04

标签: java android

当我运行应用程序时,我会看到世界地图,您可以在其中查看所有国家/地区。但这不是我想要的,我希望它以我的国家或城市的地图为例。有没有办法做到这一点?到目前为止这是我的代码。我认为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.如何在单击按钮时显示我的确切位置

1 个答案:

答案 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的一个优点是系统会尝试为您提供最佳位置。