我有一个用户输入并选择地点名称的列表。用户点击名称,弹出一个显示名称位置的信息窗口。
我已经制作了标记。我能够获得用户点击的标记的标题。如何通过标记的标题找到标记的位置?
这是我
的代码 // My list is pulled from an xml file
String[] countries = getResources().
getStringArray(R.array.list_of_countries);
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1,
countries);
actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
actv.setAdapter(adapter);
actv.setOnItemClickListener(new AdapterView.OnItemClickListener() {@
Override
public void onItemClick(AdapterView <? > parent, View view, int position,
long id) {
CharSequence country = ((TextView) view).getText();
Toast.makeText(getBaseContext(), country, Toast.LENGTH_SHORT)
.show(); // Here I get the marker's title.
// for example if the title is "EF", how do I find that the LatLng = 23,82
}
});
这是我的标记:
googleMap.addMarker(new MarkerOptions().position(new LatLng(23,81)).title("AB"));
googleMap.addMarker(new MarkerOptions().position(new LatLng(24,81)).title("CD"));
googleMap.addMarker(new MarkerOptions().position(new LatLng(23,82)).title("EF"));
答案 0 :(得分:0)
你有title
并且你说你已经有了标记。假设您在名为markerList
LatLng l;
for(Marker m:markerList){
if(m.getTitle.equals(title)){
l=m.getPosition();
}
}
可能有一种更优雅的方式来实现这一点,但这就是我一直在使用的。
更新:如果这些是您的标记,请考虑将它们保存在列表或类似内容中,例如HashMap
(标题,位置)元素。这样,您也可以更轻松地将它们添加到地图中。
答案 1 :(得分:0)
正如0x5f3759df在他的回答中所示,你必须遍历标记并搜索它们。问题是Marker类没有构造函数,因此您不创建它们然后将它们添加到地图中,它们会在您将它们添加到地图时创建。另一个问题是,添加标记后无法从地图中获取标记。如果你看一下addMarker方法,它会在将标记添加到地图时返回标记,因此诀窍是存储对addMarker方法返回的内容的引用。
所以你需要做的就是这样
ArrayList<Marker> mapMarkers = new ArrayList<Marker>();
然后当你将它们添加到地图时,将它们添加到你的arraylist
所以再次像这样
mapMarkers.add(googleMap.addMarker(new MarkerOptions().position(new LatLng(23,81)).title("AB")));
然后您可以使用循环按标题或任何其他属性查找标记。
Marker found = null;
for (Marker m : mapMarkers) {
if (whatever) found = m;
}
if (found != null) doSomething();