在Google Maps API v2 Android中添加多个标记

Tár*_*aga 16 android google-maps google-maps-markers google-maps-api-2

我想在我的地图中添加多个标记,但我不知道如何.

目前,我正在使用它,它正常工作:

Marker m1 = googleMap.addMarker(new MarkerOptions()
                .position(new LatLng(38.609556, -1.139637))
                .anchor(0.5f, 0.5f)
                .title("Title1")
                .snippet("Snippet1")
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.logo1)));


Marker m2 = googleMap.addMarker(new MarkerOptions()
                .position(new LatLng(40.4272414,-3.7020037))
                .anchor(0.5f, 0.5f)
                .title("Title2")
                .snippet("Snippet2")
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.logo2)));

Marker m3 = googleMap.addMarker(new MarkerOptions()
                .position(new LatLng(43.2568193,-2.9225534))
                .anchor(0.5f, 0.5f)
                .title("Title3")
                .snippet("Snippet3")
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.logo3)));
Run Code Online (Sandbox Code Playgroud)

但是当我想在我的地图中添加300个标记时,就会出现问题.一个接一个地做这件事非常烦人.

有没有办法从数组或任何东西读取标记?

另一个问题:我可以从外部文件中读取标记,因此我可以添加或更新标记而无需触及应用程序代码吗?

谢谢.

小智 54

ArrayList<MarkerData> markersArray = new ArrayList<MarkerData>();

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

    createMarker(markersArray.get(i).getLatitude(), markersArray.get(i).getLongitude(), markersArray.get(i).getTitle(), markersArray.get(i).getSnippet(), markersArray.get(i).getIconResID());
}


protected Marker createMarker(double latitude, double longitude, String title, String snippet, int iconResID) {

    return googleMap.addMarker(new MarkerOptions()
            .position(new LatLng(latitude, longitude))
            .anchor(0.5f, 0.5f)
            .title(title)
            .snippet(snippet)
            .icon(BitmapDescriptorFactory.fromResource(iconResID)));
}
Run Code Online (Sandbox Code Playgroud)

  • 不工作只添加一个标记,即仅用于第一个记录 (10认同)

sir*_*cac 17

使用 MarkerOptions

private GoogleMap googleMap;
private MarkerOptions options = new MarkerOptions();
private ArrayList<LatLng> latlngs = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

您可以添加到latlngs列表中,

 latlngs.add(new LatLng(12.334343, 33.43434)); //some latitude and logitude value
Run Code Online (Sandbox Code Playgroud)

然后,使用for循环将它们设置在地图上.

 for (LatLng point : latlngs) {
     options.position(point);
     options.title("someTitle");
     options.snippet("someDesc");
     googleMap.addMarker(options);
 }
Run Code Online (Sandbox Code Playgroud)