我有一个地图片段,我在其中填充了一些我从API下载的标记,我在片段顶部添加了SearchView
,现在我想通过标题搜索标记或剪切。并在键入时显示与查询匹配的项目列表。然后通过点击一个项目删除所有其他标记并放大所点击的标记。
我该怎么做?
fragment_map.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.abed.whitelabel.Fragments.CustomersFragment">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.SearchView
android:id="@+id/map_search_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
></android.support.v7.widget.SearchView>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</FrameLayout>
答案 0 :(得分:0)
以下是可用于实现的逻辑。
我想通过标题搜索标记或剪切。并在键入时显示与查询匹配的项目列表
您可以将适配器设置为搜索视图,其中包含您从api获取的所有条目。查看this SO answer,了解如何使用建议实施搜索视图
点击某个项目会删除所有其他标记并缩放所点击的标记。
我假设您要点按搜索视图建议列表项,请按照以下步骤操作
1.将项目点击监听器设置为searchView
。
2.在onItemClick()
方法中,从所选位置获取列表的对象,该位置可以具有位置坐标。在onItemClick
方法中执行以下方法。
3.通过调用map.clear()
4.通过调用以下代码
将地图缩放到所选坐标CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(your_location.getLatitude(), your_location.getLongitude())) // Sets the center of the map to location user
.zoom(17) // Sets the zoom
.build(); // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
一切顺利。快乐的编码。 :)