我想问一下我在我的应用中使用谷歌地图开发的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
答案 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+"%'");
...
}
然后像在问题中一样将地标添加回地图上。希望这有帮助...