java - oninfowindowclick 仅在有多个标记的情况下与标记信息一起使用

标签 java android google-maps android-studio google-maps-markers

我已经创建了一个循环来创建多个标记,但是 onInfoWindowClickListener 适用于具有一个参数的所有标记

 for ( i = 0; i < MyArrListx.size(); i++) {

        n = Double.parseDouble(MyArrListx.get(i));
        e = Double.parseDouble(MyArrListy.get(i));
      final String phone = (MyArrListphonenumber.get(i));
         map.addMarker(new MarkerOptions().position(new LatLng(n, e)) .title("Click to Call Transporter !!").snippet( phone )
              .position(new LatLng(n, e)))
                .setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
               map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
            @Override
            public void onInfoWindowClick(Marker marker) {


                if (marker.getSnippet().equals(phone)) // if marker source is clicked
                    dialContactPhone(phone);


            }
        });

它仅调用第一个标记 fragment 的编号,所有标记都及时包含每个 fragment 包含不同的编号。

最佳答案

调用setOnInfoWindowClickListener()在循环之外, map 只有一个 InfoWindowClickListener,它用于所有标记。

然后,只需从 OnInfoWindowClickListener 中的代码段中获取电话号码.

这应该足以满足您的需求:

for ( i = 0; i < MyArrListx.size(); i++) {
  n = Double.parseDouble(MyArrListx.get(i));
  e = Double.parseDouble(MyArrListy.get(i));
  String phone = (MyArrListphonenumber.get(i));
  map.addMarker(new MarkerOptions().position(new LatLng(n, e)) 
                .title("Click to Call Transporter !!").snippet( phone )
                .position(new LatLng(n, e)))
                .setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
}



map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
        @Override
        public void onInfoWindowClick(Marker marker) {

            //Just get the phone number stored in the snippet, and dial
            String phone = marker.getSnippet();
            dialContactPhone(phone);
        }
    });

注意,如果你需要做一些比你可以存储在 Title 和 Snippet 中更复杂的事情,那么使用 HashMap 来存储你的数据,并使用 Marker ID 作为 HashMap 的键,请参阅此处了解更多信息:
https://stackoverflow.com/a/30602617/4409409

关于java - oninfowindowclick 仅在有多个标记的情况下与标记信息一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37357445/

相关文章:

java - 对象映射器无法序列化对象类的引用

java - 如何为 Maven 项目运行集成测试用例

android - CollapsingToolbarLayout 有时会在下方留下空白

android - 在 EditText 中输入数据并在不按回车的情况下响应

java - 假模拟位置不会在谷歌地图上改变

javascript - 单击 iframe 嵌入 map 时启用指针事件

javascript - 使用库加载 google maps api

java - 为生产者消费者问题的变体选择数据结构

java - 在java中导入外部库给出运行时未找到类错误

android - 我的应用程序即使已安装也没有出现在我的应用程序抽屉中