Java Android Google 地图更改缩放控件位置并将相机设置为标记
Posted
技术标签:
【中文标题】Java Android Google 地图更改缩放控件位置并将相机设置为标记【英文标题】:Java Android Google maps change zoom controls position and set camera to marker 【发布时间】:2019-10-02 06:57:25 【问题描述】:我希望缩放控件位于中间的最顶部,我尝试做这样的事情但它不起作用:
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().
findFragmentById(R.id.map);
View mapView = mapFragment.getView();
View zoom_in_button = mapView.findViewWithTag("GoogleMapZoomInButton");
RelativeLayout.LayoutParams location_layout = (RelativeLayout.LayoutParams) zoom_in_button.getLayoutParams();
location_layout.addRule(RelativeLayout.CENTER_HORIZONTAL, 0);
我还需要这样做:将视图居中,使标记位于左下角
我这样做了,但它不起作用。
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(currentPGO.getLatitude(), currentPGO.getLongitude()), 16));
【问题讨论】:
【参考方案1】:据我所知,您无法更改地图控件,您可以隐藏它们并制作自己的放大和缩小按钮。
map.getUiSettings().setZoomControlsEnabled(false);
然后将您的按钮置于相对布局或约束布局中,并根据需要放置它们。
然后让它们放大和缩小
(来自 google maps api for android 的片段) https://developers.google.com/maps/documentation/android-sdk/views
CameraUpdateFactory.zoomIn() and CameraUpdateFactory.zoomOut()// give you a CameraUpdate that changes the zoom level by 1.0, while keeping all other properties the same.
【讨论】:
【参考方案2】:隐藏谷歌地图的默认缩放按钮
mMap.uiSettings.isZoomControlsEnabled = false
为放大和缩小创建 ImageView/Button 小部件(将其对齐在顶部中心或任何您喜欢的位置,在片段上方)
在 Widget 点击时调用以下方法:
放大
mMap.animateCamera(CameraUpdateFactory.zoomIn())
缩小
mMap.animateCamera(CameraUpdateFactory.zoomOut())
编辑:如果您希望将标记放置在左下角,则需要计算新的 LatLang 值,该值将稍微位于所需位置的右侧和顶部,并相应地移动相机。例如,如果您的缩放级别为 16,则使用如下内容:
var lat = markerLatLng.latitude
var lng = markerLatLng.longitude
mMap.addMarker(MarkerOptions().position(LatLng(lat, lng)))
lat += 0.005
lng += 0.003
moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(lat, lng), 16f))
【讨论】:
好的,谢谢,我怎样才能使视图居中,使指示的标记位于左下角 编辑了我的答案以包括定位部分。希望对您有所帮助。以上是关于Java Android Google 地图更改缩放控件位置并将相机设置为标记的主要内容,如果未能解决你的问题,请参考以下文章
如何启用 google maps android api 以实现平滑的两指缩放?
适用于 Android 的 Google 地图我的位置自定义按钮
InfoWindow中的Android Google地图摘要自动更新
如果更改包 ID 但旧包 ID 工作,Google Maps Api 无法识别/工作 -Android 工作室
如何使用适用于 Android V2 的 Google Maps 处理地图移动端?
java.lang.NoClassDefFoundError:解析失败:Lcom/google/android/gms/R$styleable;在谷歌地图集成中