Osmdroid 批量更新标记位置和弹窗信息 - 代码示例

本文将介绍如何使用 Osmdroid 库来批量更新地图上的标记位置和弹窗信息。我们将提供一个详细的代码示例,涵盖了标记创建、点击事件设置以及批量更新操作。

代码示例

import org.osmdroid.util.GeoPoint; 
import org.osmdroid.views.MapView; 
import org.osmdroid.views.overlay.Marker; 
import org.osmdroid.views.overlay.Overlay; 
import org.osmdroid.views.overlay.infowindow.InfoWindow; 

import java.util.ArrayList; import java.util.List;

public class MainActivity extends AppCompatActivity {

private MapView mapView; 
private List<Marker> markerList; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mapView = findViewById(R.id.mapView); 
    mapView.setBuiltInZoomControls(true); 

    // 初始化标记列表 
    markerList = new ArrayList<>(); 

    // 添加标记 
    addMarker(new GeoPoint(40.712776, -74.005974), "New York", "This is New York"); 
    addMarker(new GeoPoint(51.5074, -0.1278), "London", "This is London"); 
    addMarker(new GeoPoint(35.6895, 139.6917), "Tokyo", "This is Tokyo"); 
} 

private void addMarker(GeoPoint geoPoint, String title, String snippet) { 
    Marker marker = new Marker(mapView); 
    marker.setPosition(geoPoint); 
    marker.setTitle(title); 
    marker.setSnippet(snippet); 
    marker.setOnMarkerClickListener(new Overlay.OnMarkerClickListener() { 
        @Override 
        public boolean onMarkerClick(Marker marker, MapView mapView) { 
            marker.showInfoWindow(); 
            return true; 
        } 
    }); 
    markerList.add(marker); 
    mapView.getOverlays().add(marker); 
} 

private void updateMarkers() { 
    // 批量更新标记位置和弹窗信息 
    for (Marker marker : markerList) { 
        GeoPoint newGeoPoint = // 新的位置信息 
        String newTitle = // 新的标题信息 
        String newSnippet = // 新的弹窗信息 

        marker.setPosition(newGeoPoint); 
        marker.setTitle(newTitle); 
        marker.setSnippet(newSnippet); 
    } 
    mapView.invalidate(); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    mapView.onResume(); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    mapView.onPause(); 
} 

}

代码解释

代码首先创建了一个 MapView 对象来显示地图,并使用 addMarker() 方法添加标记到地图上,并将它们保存到 markerList 列表中。每个标记都设置了点击事件,点击标记时会显示弹窗。

要批量更新标记的位置和弹窗信息,我们可以使用 updateMarkers() 方法。在这个方法中,我们使用循环遍历 markerList 列表,然后根据新的位置和信息更新每个标记。最后,我们调用 mapView.invalidate() 方法来刷新地图视图。

总结

本文提供了一个使用 Osmdroid 批量更新标记位置和弹窗信息的代码示例,您可以根据实际需求修改和适应此代码。希望本文能帮助您更好地理解和使用 Osmdroid 库。

Osmdroid 批量更新标记位置和弹窗信息 - 代码示例

原文地址: https://www.cveoy.top/t/topic/pxjT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录