在Android上实现开放式街道地图并在标记上显示InfoWindow,可以通过以下步骤实现:
以下是一个示例代码,使用百度地图SDK实现在Android上显示开放式街道地图并在标记上显示InfoWindow:
// 导入必要的类和包
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.InfoWindow;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.Marker;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.OnMarkerClickListener;
import com.baidu.mapapi.model.LatLng;
public class MainActivity extends AppCompatActivity {
private MapView mapView;
private BaiduMap baiduMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化地图控件
mapView = findViewById(R.id.mapView);
baiduMap = mapView.getMap();
// 设置地图初始位置和缩放级别
LatLng initialPosition = new LatLng(39.908860, 116.397390);
float initialZoom = 12.0f;
baiduMap.setMapStatus(MapStatusUpdateFactory.newLatLngZoom(initialPosition, initialZoom));
// 添加标记和InfoWindow
LatLng markerPosition = new LatLng(39.908860, 116.397390);
MarkerOptions markerOptions = new MarkerOptions().position(markerPosition).title("Marker");
baiduMap.addOverlay(markerOptions);
// 设置标记点击事件监听器
baiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
// 创建InfoWindow
View infoWindowView = getLayoutInflater().inflate(R.layout.info_window_layout, null);
InfoWindow infoWindow = new InfoWindow(infoWindowView, marker.getPosition(), -100);
// 显示InfoWindow
baiduMap.showInfoWindow(infoWindow);
return true;
}
});
}
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mapView.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
}
在上述代码中,需要在布局文件中添加一个MapView控件,并在res/layout目录下创建一个info_window_layout.xml文件,用于自定义InfoWindow的内容和样式。
领取专属 10元无门槛券
手把手带您无忧上云