如何通过标题找到标记位置?

时间:2014-08-01 00:05:44

标签: java android xml

我有一个用户输入并选择地点名称的列表。用户点击名称,弹出一个显示名称位置的信息窗口。

我已经制作了标记。我能够获得用户点击的标记的标题。如何通过标记的标题找到标记的位置?

这是我

的代码
 // 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"));

2 个答案:

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