怎么样了?

我正在开发基于Google地图和位置服务的android应用。我对Google Maps有所了解,这是我在该项目中学到的,但是关于GoogleMaps有几件事我不知道...

在我的主要活动中,我使用mapFragment。我有我的onMapReady方法。

@Override
public void onMapReady(GoogleMap map) {

    double myCurrentLatitude = getGPS()[0];
    double myCurrentLongitude = getGPS()[1];

    CameraPosition myCurrentLocation = CameraPosition.builder()
            .target(new LatLng(myCurrentLatitude, myCurrentLongitude))
            .zoom(12)
            .bearing(0)
            .tilt(2)
            .build();

   map.moveCamera(CameraUpdateFactory.newCameraPosition(myCurrentLocation));
    map.getUiSettings().setScrollGesturesEnabled(true);

}


这只是活动中的一种方法,并且运行良好,当活动启动时,它会放大用户所在的位置。

现在,我希望能够将地图缩放到特定位置。假设用户想去某个地方,而我可以得到他们想去的地方的经度和纬度(加倍)。...我还无法获得此活动来更改地图的焦点并缩放到此位置新位置。

我已经尝试了几件事,但我只是不知道如何操作mapFragment。

我的一些不起眼的研究向我展示了getMapAsync,但是似乎这些是刚启动活动时调用的方法。我正在寻找一种方法(我称它为placeLocation(lat,long)...可以在以后每3分钟调用一次,只要我愿意,它就会采用纬度/经度,然后将mapFragment放大位置。

我在我的placeLocation方法中尝试了这一行

map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();


但是android studio对于此getMap()方法实在是太苦了-甚至根本无法识别它。基本上我不知道在getMap,getMapAsync之间可以用什么方法来操作我的地图...您能帮忙吗?

请给我一些指示?

感谢您的阅读,也感谢您的宝贵时间。

您在代码中谦虚的兄弟。

最佳答案

首先,您需要创建一个类变量,例如:

private GoogleMap mMap;

现在,当您的onMapReady()方法触发时,您可以获取GoogleMap对象并将其设置为类变量。

@Override
public void onMapReady(GoogleMap map) {
    mMap = map;

    double myCurrentLatitude = getGPS()[0];
    double myCurrentLongitude = getGPS()[1];

    CameraPosition myCurrentLocation = CameraPosition.builder()
            .target(new LatLng(myCurrentLatitude, myCurrentLongitude))
            .zoom(12)
            .bearing(0)
            .tilt(2)
            .build();

   mMap.moveCamera(CameraUpdateFactory.newCameraPosition(myCurrentLocation));
   mMap.getUiSettings().setScrollGesturesEnabled(true);
}


现在,当您需要更改地图时,只需使用类变量“ mMap”,如下所示:

private void mapMoveTo(double lat, double lng){
    LatLng latLng = new LatLng(lat, lng);
    if(mMap != null){
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomFactor));
    }
}

10-06 03:40
查看更多