搜索自定义地图标记并在Android列表中显示结果

时间:2017-06-27 10:46:22

标签: android google-maps searchview

我有一个地图片段,我在其中填充了一些我从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>

1 个答案:

答案 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)); 

一切顺利。快乐的编码。 :)