百度地图隐藏后显示地图只显示一部分

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:46   2490   0

前端页面:

$("#reviseBan").click(function(){

var ModifyMap = new BMap.Map("ModifyMap",{enableMapClick: false});

var pointer = new BMap.Point(res.data.BanGpsX,res.data.BanGpsY);
ModifyMap.centerAndZoom(pointer, 15);
ModifyMap.setCenter(pointer);
marker = new BMap.Marker(pointer);
ModifyMap.addOverlay(marker);
var xy = document.getElementById('xy');
xy.value=res.data.BanGpsX+','+res.data.BanGpsY;
ModifyMap.addEventListener("click",function(e){
opsiX = e.point.lng;
opsiY = e.point.lat;
point = new BMap.Point(opsiX,opsiY);
if(e.overlay){
marker.οndblclick=function(){
url='/public/baidumap/big.html?position='+xy.value;
window.open(url,'parent');
};
}else{
ModifyMap.clearOverlays()
marker = new BMap.Marker(point); // 创建标注
ModifyMap.addOverlay(marker);
xy.value=opsiX+','+opsiY;

}

});

这是我的代码。不能显示有两个原因:

1.

var ModifyMap = new BMap.Map("ModifyMap",{enableMapClick: false});

创建实例的时候写在了click里面

2.容器处于隐藏状态导致的,api会认为地图宽高为0。

解决办法:1.把ModifyMap移入click外面

2.让弹出层dispaly=block;我layer的弹出层,执行地图之前要弹出层display=block;关闭的时候layer使用end方法让他隐藏

修改后代码:

$("#reviseBan").click(function(){
var obj = $('.checkId');
var objLength = $('.checkId').length;
for(var i = 0;i < obj.length;i++){
if(obj[i].checked){
var BanID = obj.eq(i).val();
}
}
//var vanId = $('.checkId').eq(0).val();
if(BanID == undefined){
layer.msg('请先选择要修改的信息');
}else{

$.get('/ph/ConfirmBanInfo/edit/BanID/'+BanID,function(res){
res = JSON.parse(res);
console.log(res);
if(res.data.BanGpsX==""||res.data.BanGpsY==""){
res.data.BanGpsX = "114.334228";
res.data.BanGpsY = "30.560372";
};

$('#modifyForm').css('display','block');
var ModifyMap = new BMap.Map("ModifyMap",{enableMapClick: false});

ModifyMap.clearOverlays();
var pointer = new BMap.Point(res.data.BanGpsX,res.data.BanGpsY);
ModifyMap.centerAndZoom(pointer, 15);
// ModifyMap.setCenter(pointer);
marker = new BMap.Marker(pointer);
ModifyMap.addOverlay(marker);
// ModifyMap.centerAndZoom(pointer, 15);
var xy = document.getElementById('xy');
xy.value=res.data.BanGpsX+','+res.data.BanGpsY;
ModifyMap.addEventListener("click",function(e){
opsiX = e.point.lng;
opsiY = e.point.lat;
point = new BMap.Point(opsiX,opsiY);


if(e.overlay){
marker.οndblclick=function(){

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛