用于搜索标记的搜索框(Google 地图)

Search box to search marker (Google Map)

我想问一下我在应用程序中使用 google 地图开发的 android 应用程序。我已经在我的地图上做了多个标记(1323 个数据,所以 1323 个标记)。所以问题是:

我想制作搜索框以在我的地图上查找特定标记。我不知道如何找到。是否可以在 marker

中使用 title 或 snippet 找到
c = myDbHelper.query("Landslide", null, null, null, null,null, null);
if(c.moveToFirst()) {
    do {
        String loc = c.getString(3);
        Double lat = c.getDouble(4);
        Double lng = c.getDouble(5);
        String date = c.getString(1);
        //Integer death = c.getInt(6);

        mMap.addMarker(new MarkerOptions()
            .position(new LatLng(lat, lng))
            .title(loc + "")
            .snippet("Latitude:" + lat + " " + "Longitude:" + lng + " " + "Date:" + date + "")
            .icon(BitmapDescriptorFactory.fromResource(R.drawable.red1)));
        } while (c.moveToNext());
    }
}

在此先感谢帮助我的人, 问候, 哈菲祖尔礼萨

创建全局 List/Map/Array 个标记:

private HashMap<String, Marker> markers = new HashMap<String,Marker>();

并用标记填充:

//...
Marker marker = mMap.addMarker(new MarkerOptions()
            .position(new LatLng(lat, lng))
            .title(loc + "")
            .snippet("Latitude:" + lat + " " + "Longitude:" + lng + " " + "Date:" + date + "")
            .icon(BitmapDescriptorFactory.fromResource(R.drawable.red1)));
markers.put("Name1", marker);
//add more and more markers

现在您可以轻松找到并获取任何标记:

Marker marker = markers.get("Name1");

作为 markers HashMap 的第一个参数,您可以将 Marker title/snippet/coordinates/... .

我猜你的标记数据存储在你设备上的 SQLite 中。 您可以尝试在您的布局中添加一个搜索框,例如 EditText xml :

<EditText android:id="@+id/edit_textt_d"  android:layout_width="wrap_content" android:layout_height="wrap_content"/>

然后执行 onChange :

    yourEditText = (EditText) findViewById(R.id.yourEditTextId);
    yourEditTextaddTextChangedListener(new TextWatcher() {
        @Override
        public void afterTextChanged(Editable s) {}
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            changeMarker(s)
        } 
 });

在每次更改时,您应该: 删除地图的当前标记, 仅查询与搜索框值匹配的标记:

public void changeMarker(String searchString) {
    ...
    myGoogleMap.clear();
    c=myDbHelper.getReadableDatabase().rawQuery("SELECT * FROM marker WHERE marker.name LIKE '"+searchString+"%'");
    ...
}

然后像您在问题中所做的那样将您的标记重新添加到地图上。希望这有助于...