它怎么样?
我正在使用基于Google地图和位置服务的Android应用。我对谷歌地图有一点了解,我在这个项目上学到了很多东西,但有几件关于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分钟后调用/每当我需要时调用它将接受lat / long我给它,并缩放我的mapFragment位置。
我在我的placeLocation方法
中尝试了这一行map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
但是android studio对这个getMap()方法真的很痛苦 - 基本上甚至都没有识别它。基本上我不知道在getMap,getMapAsync之间操纵我的地图有什么方法......你能帮忙吗?
请给我一些指示?
感谢阅读,感谢您的时间。
你谦虚的兄弟代码。
答案 0 :(得分:2)
首先,您需要创建一个类变量,例如:
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));
}
}