Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android uu如何在google map v2上获得标记的位置并将其与Latlng数组匹配_Java_Android_Api_Google Maps_Marker - Fatal编程技术网

Java Android uu如何在google map v2上获得标记的位置并将其与Latlng数组匹配

Java Android uu如何在google map v2上获得标记的位置并将其与Latlng数组匹配,java,android,api,google-maps,marker,Java,Android,Api,Google Maps,Marker,大家好,我是谷歌地图API的新手,我有一个在地图上添加标记的LatLng对象列表 for (LatLng location : camerasLocations) { googleMap.addMarker(new MarkerOptions() .position(location).icon(icon)

大家好,我是谷歌地图API的新手,我有一个在地图上添加标记的LatLng对象列表

 for (LatLng location : camerasLocations) {
                                googleMap.addMarker(new MarkerOptions()
                                        .position(location).icon(icon)
                                        .title(cameraList.get(j).getName()));


                            }
当我用以下命令单击标记时,我想知道标记在该阵列上的位置:

  googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
                                        @Override
                                        public boolean onMarkerClick(Marker marker) {
                                            showDialog(getActivity(), "");
                                            return false;
                                        }
                                    });

需要帮忙吗

据我所知,它们不是以那种方式定位的。你得自己处理。如果您确定只想根据创建顺序获取索引,您可以这样做:

使用Map创建专用字段,用于存储该信息

//class field  
private Map<Marker, Integer> markersOrderNumbers = new HashMap<>();
然后可以通过onclick方法获得这个索引号

 googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
                                    @Override
                                    public boolean onMarkerClick(Marker marker) {
                                        Integer index = markersOrderNumbers.get(marker);
                                        //Do whatever you want to
                                        showDialog(getActivity(), "");
                                        return false;
                                    }
                                });
我可以补充一点,如果您不一定关注索引本身,而是关注使用该Id获得的一些信息,那么您可以使用提供的方法首先将标记与所需的信息进行映射,如:

Map<Marker, Whatever> ...
地图。。。

在谷歌地图中添加标记时,首先需要将位置设置为标记上的标记

for(int i = 0, i < camerasLocations.size(), i++){

                                Marker marker = googleMap.addMarker(new MarkerOptions()
                                .position(location).icon(icon)
                                .title(cameraList.get(j).getName()))
                                .setTag(i);
                            }

And then you can obtain this marker position in the onclick method using getTag() method : 




googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
                @Override
                public boolean onMarkerClick(Marker marker) {

                    Toast.makeText(this, "Marker position >> " + marker.getTag(), Toast.LENGTH_SHORT).show();
                    return false;
                }
            });
for(int i=0,i>”+Marker.getTag(),Toast.LENGTH\u SHORT.show();
返回false;
}
});

我不知道我是否理解正确,如果没有,请进一步解释您的问题。我得到的是-你有一些LatLng对象的列表,你正在基于它们创建你的标记。当用户单击某个标记时,您想知道该标记在创建顺序中的位置吗?例如,若用户单击最初创建的标记,您希望得到0、2->1、3->2等?是的,当您在listView中单击项时,它返回该项在listindex变量上的位置。当我单击每个标记时,返回0。不抱歉,这是我的错,返回正确的索引,但是我想把映射上的整数赋给我从中获取latLng对象的原始数组(它是JSON中的数组,包含其他属性,然后是lat long值,如id、name、time),如何将索引赋给该数组,以获取映射上的名称和id??Integer?我不明白。查看循环“for(LatLng位置:camerasLocations)”,您的阵列只包含LatLng。或者你说的是“摄影师”?请提供更多信息,如“j”是什么。正如我在回答中所写的那样,你可以用列表中的对象映射标记,这将是更干净、更好的解决方案。就像地图一样,当用户点击一个标记时,你可以获得相关的对象,并获得它的名称、时间等。是的,我说的是cameralist,它是我从web服务检索到的一个数组保持摄影机对象,它具有比纬度和经度更多的属性,我可以从中创建摄影机位置标记,如:名称、id、速度、时间。我想在单击标记时获取名称和id,你可以告诉我如何获取它的位置,我尝试了你所说的映射,但它始终给我0值我通过分配映射的索引从列表中获取值来解决,如:cameraList.get(index).getID() ;............ cameraList.get(index.getName()。。。。。。。。。。。谢谢你的帮助:)两年前我写了这个问题,现在我面临着同样的问题,当我用谷歌搜索时,我的问题出现了,我尝试了你的解决方案,非常简单和完美非常感谢
for(int i = 0, i < camerasLocations.size(), i++){

                                Marker marker = googleMap.addMarker(new MarkerOptions()
                                .position(location).icon(icon)
                                .title(cameraList.get(j).getName()))
                                .setTag(i);
                            }

And then you can obtain this marker position in the onclick method using getTag() method : 




googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
                @Override
                public boolean onMarkerClick(Marker marker) {

                    Toast.makeText(this, "Marker position >> " + marker.getTag(), Toast.LENGTH_SHORT).show();
                    return false;
                }
            });