英文:
moveCamera() uses wrong location data on Android
问题
我希望你能帮助我。我的当前应用程序能够获取我的当前位置(通过GPS)。现在我在我的当前位置添加了一个标记,它工作得很好,但是如果我想将相机移动到标记,它就无法工作。moveCamera(position);
的输入与 addMarker(position);
的输入相同。
以下是我的代码:
// 当没有位置信息时使用center(柏林)
final CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(52.5075389, 13.5231758));
final CameraUpdate zoom = CameraUpdateFactory.zoomTo(14);
// 从其他活动获取位置信息
final Bundle extras = getIntent().getExtras();
MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.mapfragment);
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
LatLng position = new LatLng(52.5075389, 13.5231758);
if (extras != null) { // 如果有位置信息
position = (LatLng) extras.getParcelable("location");
final CameraUpdate centerLocation = CameraUpdateFactory.newLatLng(position);
MarkerOptions markerOptions = new MarkerOptions().position(position).title(MARKER_TITLE).snippet(MARKER_SNIPPET);
googleMap.addMarker(markerOptions);
googleMap.getUiSettings().setMapToolbarEnabled(false); // 隐藏自动生成的按钮
googleMap.moveCamera(centerLocation);
googleMap.animateCamera(zoom);
} else {
// 这里是其他一些代码
}
}
});
我的标记位于正确的位置,但是我的 centerLocation
不在正确的位置。有什么建议吗?
英文:
I hope you can help me. My current app is able to get my current location (via GPS). Now I add a marker to my current location which works perfect, but if I want to move my camera to the marker it doesn't work. The inputs for the moveCamera(positon);
are the same as for addMarker(position);
here is my code:
//center is used when no location is available (Berlin)
final CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(52.5075389,13.5231758));
final CameraUpdate zoom = CameraUpdateFactory.zoomTo(14);
//get location from other activity
final Bundle extras = getIntent().getExtras();
MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.mapfragment);
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
LatLng position = new LatLng(52.5075389,13.5231758);
if (extras != null) { //if location available
position = (LatLng)extras.getParcelable("location");
final CameraUpdate centerLocation = CameraUpdateFactory.newLatLng(position);
MarkerOptions markerOptions = new MarkerOptions().position(position).title(MARKER_TITLE).snippet(MARKER_SNIPPET);
googleMap.addMarker(markerOptions);
googleMap.getUiSettings().setMapToolbarEnabled(false); //hide auto created buttons
googleMap.moveCamera(centerLocation);
googleMap.animateCamera(zoom);
}
else{
//some other code here
}
My marker is at the correct position, but my centerLocation don't. Any suggestions?
答案1
得分: 0
多亏了评论。这是我的解决方案:
final float zoom = 14;
// 代码的其余部分保持不变
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(position, zoom));
英文:
thanks to the comments. here is my solution:
final float zoom = 14;
//rest of the code is unchaged
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(position, zoom));
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论