百度地图API调用如何让标注内容自动呈现在最佳视野内

2024-10-10前端开发
162

我有一堆标注,不规则的散落在地图的各个地方,我想把它们展示在一个最佳视野中,要怎么操作呢?我们在百度地图API的类参考里,找到这个一个类,setviewport 。 可以让一系列的标注,在地图上呈现最佳视野。具体操作如下:

一、创建地图

建立一个htm文件,把基本的地图程序拷贝进去。最基础的地图示例。

var map = new BMap.Map("container");    //地图容器

二、创建点数组

随意创建7个点,放到一个数组里。

var points = [                          //创建7个点
    new BMap.Point(116.401801,39.912114),
    new BMap.Point(116.402802,39.912225),
    new BMap.Point(116.403803,39.912336),
    new BMap.Point(116.404804,39.912447),
    new BMap.Point(116.405805,39.912558),
    new BMap.Point(116.406806,39.912669),
    new BMap.Point(116.407804,39.912123)
];
三、创建标注
var marker1 = new BMap.Marker(points[0]);   //创建7个标注
var marker2 = new BMap.Marker(points[1]);
var marker3 = new BMap.Marker(points[2]);
var marker4 = new BMap.Marker(points[3]);
var marker5 = new BMap.Marker(points[4]);
var marker6 = new BMap.Marker(points[5]);
var marker7 = new BMap.Marker(points[6]);
四、显示标注
map.addOverlay(marker1);                    //显示7个标注
map.addOverlay(marker2);
map.addOverlay(marker3);
map.addOverlay(marker4);
map.addOverlay(marker5);
map.addOverlay(marker6);
map.addOverlay(marker7);
五、初始化地图
map.centerAndZoom(points[6], 16);                 // 初始化地图,设置中心点坐标和地图级别
map.addControl(new BMap.NavigationControl());      //为地图添加鱼骨

六、让标注显示在最佳视野内

为其中一个marker添加点击事件,让这7个标注显示在最佳视野内。
 

marker7.addEventListener("click",function(){        //为marker7添加事件
    map.setviewport(points);              
});
最终效果如下图:

全部源代码如下: 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>自动调整视野</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.2"></script>
</head>
<body>
<div style="width:800px;height:400px;border:1px solid gray" id="container"></div>
</body>
</html>
<script type="text/javascript">
var map = new BMap.Map("container");    //地图容器

var points = [                          //创建7个点
    new BMap.Point(116.401801,39.912114),
    new BMap.Point(116.402802,39.912225),
    new BMap.Point(116.403803,39.912336),
    new BMap.Point(116.404804,39.912447),
    new BMap.Point(116.405805,39.912558),
    new BMap.Point(116.406806,39.912669),
    new BMap.Point(116.407804,39.912123)
];
var marker1 = new BMap.Marker(points[0]);   //创建7个标注
var marker2 = new BMap.Marker(points[1]);
var marker3 = new BMap.Marker(points[2]);
var marker4 = new BMap.Marker(points[3]);
var marker5 = new BMap.Marker(points[4]);
var marker6 = new BMap.Marker(points[5]);
var marker7 = new BMap.Marker(points[6]);
map.addOverlay(marker1);                    //显示7个标注
map.addOverlay(marker2);
map.addOverlay(marker3);
map.addOverlay(marker4);
map.addOverlay(marker5);
map.addOverlay(marker6);
map.addOverlay(marker7);

map.centerAndZoom(points[6], 16);                 // 初始化地图,设置中心点坐标和地图级别
map.addControl(new BMap.NavigationControl());      //为地图添加鱼骨

var label = new BMap.Label("点击这个标注,展现7个标注的最佳视野",{position : points[6], offset: new BMap.Size(3,-6)});       //定义一个文字标签,注意1.2请用position
map.addOverlay(label);

marker7.addEventListener("click",function(){        //为marker7添加事件
    map.setviewport(points);
});

</script>
The End
百度地图 setviewport

相关推荐

网站部署https后百度地图不显示问题
https的网站如果引用百度地图,会出现加载不了的问题,这是因为涉及到跨域问题,网站是https的,但是引用百度地图的是http的,这个要怎么操作呢? 比如我引用的地址:http://api.map.baidu.com/api?v=2.0ak=AK显示 后来看了一下,少了一个s=1字段,加一下s=1...
2025-07-28 前端开发
139

百度地图调用点聚合和弹窗事件
什么是点聚合 点聚合 (MarkerClusterer 标记聚合器)用来解决加载大量点要素到地图上产生覆盖现象的问题,并提高性能。显示效果如下图: 简单实例 HTML \ CSS style body, html {width: 100%;height: 100%;margin: 0;font-family: "微软雅黑";} #allmap {wi...
2025-01-09 前端开发
179

百度地图开发自定义信息窗口openInfoWindow样式修改
1.InfoWindow的样式,百度是没用提供直接使用的样式表的,目前都是热心网友在实际开发中自己的经验和实战总结; 2.百度提供了InfoBox富文本标签弹出框的接口,引入InfoBox.js,即可自定义样式或丰富的边框功能,但是鼠标单击下一个标注时,已经弹出的模态框...
2024-11-28 前端开发
212

百度地图API调用如何让标注内容自动呈现在最佳视野内
我有一堆标注,不规则的散落在地图的各个地方,我想把它们展示在一个最佳视野中,要怎么操作呢?我们在百度地图API的类参考里,找到这个一个类,setViewport 。可以让一系列的标注,在地图上呈现最佳视野。具体操作如下: 一、创建地图 建立一个htm文件,把基...
2024-10-10 前端开发
162