如何在GOOGLE MAP中显示多个标记

时间:2014-01-03 09:47:06

标签: android google-maps arraylist android-fragments google-maps-api-2

我怀疑如何在Google地图上显示多个标记。

我通过J SON网络服务得到一些车辆的纬度和经度值,我使用单独的java文件进行名为Util的声明,我将纬度存储在名为latitudeall(Util.latitudeall)和经度的数组列表中以相同的方式在名为(Util.longitudeall)的数组列表中,以及名为(Util.vehiclenumall)的数组列表中的车辆编号。

在另一个java文件中我试图在片段中设置标记

这是我的代码

FragmentManager fmanager = getSupportFragmentManager();

//googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

    SupportMapFragment mapFragment =  (SupportMapFragment) fmanager.findFragmentById(R.id.map);
    googleMap = mapFragment.getMap();

    for (int i = 0; i < Util.vehiclenumall.size(); i++) {     
     googleMap.addMarker(new MarkerOptions().icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)).position( new LatLng(Double.parseDouble(Util.latitudeall.get(i)), Double.parseDouble(Util.longitudeall.get(i)))));
       }}

上面的代码不起作用,如何通过从array-list中获取纬度和经度值来设置标记......

以下是我的log-cat中的Util.latitudeall(纬度数字)数组列表的响应

enter code here
latitude number----[8.150896666666666666666666667, 
                    8.182241666666666666666666667,  
                    13.262706666666666666666666667,
                    8.50547, 8.849243333333333333333333333,  
                    8.157979999999999666666666667]

以下是我的日志cat中的Util.longitudeall(经度数字)数组列表的响应

longitude number----[
                 77.478666666666666666666666667, 
                 77.412475, 80.03815333333333333333333333,
                  76.970696666666666666666666667,
                  76.637001666666666666666666667, 
                   77.462568333333333333333333333]

这是我的log-cat中的Util.vehiclenumall(车辆编号)数组列表的响应

vehicle number----[
               TN-74-AD-8178, 
                TN-74-AE-1900, 
                TN-20-CC-2543, 
                KL-01-7890, 
                TN-74-AD-7463,
                 TN-20-P-3220]

我的任务是在oncreate()内调用一个类。当调用该类时,必须在google地图中自动设置标记。

我的问题是: 如何调用这些阵列列表值并在谷歌地图内设置标记(在碎片代码内)

请帮助我......

提前致谢....

1 个答案:

答案 0 :(得分:0)

请注意我不是Android开发人员,我的地图体验在于Web应用程序,但为什么在这里:

   for(int i=0;i<Util.vehiclenumall.size();i++)
{
     googleMap.addMarker(new MarkerOptions().title(Util.vehiclenumall.get(i)).
            position(new LatLng(Util.latitudeall.get(i).length(),Util.longitudeall.get(i).length())).title("hello")
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));}googleMap.setMyLocationEnabled(true);googleMap.setMapType(mapType);}

您是否在Util.latitudeall.get(i)之后调用.length()。我假设get方法返回数组索引处的值。因此,长度将提供无效的长和纬度。我建议将其更改为:

for(int i=0;i<Util.vehiclenumall.size();i++)
{
     googleMap.addMarker(new MarkerOptions().title(Util.vehiclenumall.get(i)).
            position(new LatLng(Util.latitudeall.get(i),Util.longitudeall.get(i))).title("hello")
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));}googleMap.setMyLocationEnabled(true);googleMap.setMapType(mapType);}

长度调用将给出返回值的长度而不是值本身,例如,如果您的纬度为8.150896666666666666666666667,则Latitude.length()将为29.这将作为位置传递给标记,但是实际上并没有在地理上有效。