这个不是我想要的功能 ,我的想法是页面在打开的时候动态的把这两个值传进来,比如我数据库里已经这个经纬度,我是想打开这个地图页面时 让页面自动定位到数据库里的经纬度,我在页面上做了值变化,但是页面加载还是没有变动
let lng = Forguncy.Page.getCell("lng").getValue();
let lat = Forguncy.Page.getCell("lat").getValue();
let zoom = 15;
let map = Forguncy.Page.getCell("BMapCell").getCellType().map;
let currentMarker = null; // 用于存储当前标记点对象
// 添加延时机制
setTimeout(() => {
changeMapView(lng, lat, zoom);
}, 500); // 500ms延时,可根据需要调整
changeMapView(lng, lat, zoom);
function changeMapView(lng, lat, zoom) {
// 检查地图是否完全加载
if (!map || !map.centerAndZoom) {
console.warn("地图未加载完成,将重试...");
setTimeout(() => changeMapView(lng, lat, zoom), 300); // 300ms后重试
return;
}
// 清除旧标记点(如果存在)
if (currentMarker) {
map.removeOverlay(currentMarker);
currentMarker = null;
}
// 创建新坐标点
var point = new BMap.Point(lng, lat);
// 创建新标记点
currentMarker = new BMap.Marker(point);
// 添加标记点到地图
map.addOverlay(currentMarker);
// 添加信息窗口(可选)
var infoWindow = new BMap.InfoWindow("当前位置");
currentMarker.addEventListener("click", function() {
this.openInfoWindow(infoWindow);
});
// 设置地图视图
if (zoom) {
map.centerAndZoom(point, zoom);
} else {
map.panTo(point);
}
}
|