搜索框搜索标记(谷歌地图)

时间:2015-04-23 09:14:45

标签: android sqlite google-maps-markers google-maps-android-api-2 search-box

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

我想在搜索框中找到我地图上的特定标记。我不知道该怎么找。是否可以在标记

中使用标题或片段进行查找
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());
    }
}

先谢谢谁帮助我, 问候, Hafizul Reza

2 个答案:

答案 0 :(得分:1)

创建标记的全局列表/地图/数组:

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");

作为标记HashMap的第一个参数,您可以放置​​Marker title / snippet / coordinates / ....

答案 1 :(得分:0)

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

<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+"%'");
    ...
}

然后像在问题中一样将地标添加回地图上。希望这有帮助...