Android:GoogleMaps 标记详细信息片段
Posted
技术标签:
【中文标题】Android:GoogleMaps 标记详细信息片段【英文标题】:Android: GoogleMaps marker details fragment 【发布时间】:2021-08-20 11:53:06 【问题描述】:我是 android 的初学者,我正在尝试实现类似于 Google Maps App 的功能。当我按下标记时,我希望在我的SupportMapFragment
上显示一个带有详细信息的新片段,如下所示:
我怎样才能做到这一点?
这是该片段的默认布局吗?
那是一个片段还是只是一个修改过的信息窗口?
【问题讨论】:
这很可能是一个隐藏的视图,它变得可见并加载了所选信息。 @che10,谢谢。我想你是对的。我必须创建一个自定义视图。 【参考方案1】:是的,您可以使用这个库轻松实现它,它在最小化和拉伸时支持 2 种布局,我在谷歌地图应用程序之后实现了类似的行为,获取如下数据并将其设置在布局中
here is link
样本用法是
<com.sothree.slidinguppanel.SlidingUpPanelLayout
xmlns:sothree="http://schemas.android.com/apk/res-auto"
android:id="@+id/sliding_layout"
android:layout_
android:layout_
android:gravity="bottom"
sothree:umanoPanelHeight="68dp"
sothree:umanoShadowHeight="4dp">
<TextView
android:layout_
android:layout_
android:gravity="center"
android:text="Main Content"
android:textSize="16sp" />
<TextView
android:layout_
android:layout_
android:gravity="center|top"
android:text="The Awesome Sliding Up Panel"
android:textSize="16sp" />
</com.sothree.slidinguppanel.SlidingUpPanelLayout>
【讨论】:
【参考方案2】:我想通了。我需要的是一个底页对话框。这是我用作灵感来源的非常 useful guide。
步骤 1
在 `app.gradle` 中实现材质组件库:implementation 'com.google.android.material:material:1.3.0'
步骤 2
在 res->layout 中创建您选择的布局。我的看起来像这样:<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_
android:layout_
android:layout_gravity="bottom">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn"
android:layout_
android:layout_
android:layout_margin="10dp"
android:text="Rent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
布局与底部对齐。
第三步
定义一个实例化 BottomSheetDialog 的方法:private void showBottomSheetDialog()
final BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(getContext());
bottomSheetDialog.setContentView(R.layout.MY_LAYOUT_NAME);
AppCompatButton btn = bottomSheetDialog.findViewById(R.id.btn_view);
bottomSheetDialog.show();
第四步
这一步是额外的,如果您想查看如何通过按下 GoogleMap 标记来调用 BottomSheetDialog。确保处理 MapSupportFragment 的类实现 OnMapReadyCallback
、GoogleMap.OnMarkerClickListener
和(如果您需要标记集群)ClusterManager.OnClusterItemClickListener
。覆盖必要的方法:
@Override
public boolean onMarkerClick(Marker marker)
showBottomSheetDialog();
return false;
如果你需要集群,不要忘记在@onMapReady() 中添加:
map.setOnCameraIdleListener(clusterManager);
map.setOnMarkerClickListener(clusterManager);
clusterManager.setOnClusterItemClickListener(this);
瞧!
【讨论】:
以上是关于Android:GoogleMaps 标记详细信息片段的主要内容,如果未能解决你的问题,请参考以下文章
带有多个标记的javascript googlemaps没有使用cordova应用程序在android中显示标记
用于颤振的 GoogleMaps 插件仅显示 ios 模拟器上的标记
用于 clusterItems 的 Android 谷歌地图 markerClickListener
如何在 GoogleMaps for iOS 中使用自定义标记进行标记聚类?