我有一个非常好奇的问题,我无法在任何地方找到答案。
目标:
当我将模型加载到地图上时,我从该模型中提取一个点,并且该点是我想要设置为新的相机中心。
问题:
当我使用map.animateCamera(position)
时,相机移动到模型下方。我不能推断出什么是错的,我已经在文档中搜索过但没有找到任何内容。
我如何测试:
为了测试位置是否正确,我在地图上放置了一个标记点,并且该标记位于正确的位置,这意味着相机是问题所在。
我也尝试了不同的方法map.moveCamera()
以及CameraUpdateFactory.newCameraPosition()
等等。
代码
private void recenterModel(List<PolygonOptions> t) {
if(t == null || t.isEmpty()) return;
int center = t.size()/2;
PolygonOptions polygon = t.get(center);
while(polygon.getPoints().isEmpty()){
polygon = t.get((++center%t.size()));
if(center > t.size()+1) return; /*If we are here, there aren't any points in model*/
}
center = polygon.getPoints().size()/2;
LatLng centerPoint = polygon.getPoints().get(center);
GoogleMap map = modelMapDrawable.ctx.getMap();
map.animateCamera(CameraUpdateFactory.newLatLngZoom(centerPoint , 15));
map.addMarker(new MarkerOptions().position(centerPoint));
}
对我来说是什么
当我首次加载应用程序时,它会正确加载项目的中心点。 map.animateCamera()
就像一个魅力。每次我为中心点做它都有效。 但是当我map.animateCamera()
到其他位置时,我再也无法让它工作了。
所以我觉得相机的坐标系已经移动了
答案 0 :(得分:0)
请试试这个:
map.animateCamera(CameraUpdateFactory.newLatLngZoom(centerPoint , 15), 2000, new GoogleMap.CancelableCallback() {
@Override
public void onFinish() {
}
@Override
public void onCancel() {
}
});
这将为动画提供一些时间。我认为,这里的问题在于即时执行正在处理的动画。