Angular/Vue调用百度地图+标注点不显示图标+多标注点计算地图中心位置
整理一下~
一、在vue中调用百度地图
首先当然是申请百度密匙(很简单,不多说)
1、在index.html文件中引入百度地图JavaScript API接口:
3、在地图组件中import BMap:
4、创建容器,用来显示百度地图,注意给高宽
5、还有一个比较好用的白兔地图生成器,可以实现基本的需求吧,标路线之类的我还没有用过,这儿没有。
http://api.map.baidu.com/lbsapi/creatmap/index.html
这个生成器可以生成代码,有些注释,一目了然。不过多介绍了。
二、在Angular中调用百度地图
一样的在index.html文件中引入百度地图JavaScript API接口,如上。基本的就不多说了
下面记录一下过程中的问题:
一、标注点的图标不显示
即,标注点显示在地图中,但是绿色的水滴形标记未能显示。在生成器中的代码主要是这几行:

查了一下,我这边的原因是图片地址不对,更换图片地址后就正确了。
图片地址改为如下就可以成功显示了:

二、另一个大问题就是代码中会有一个中心点经纬度,设置这个中心点的经纬度之后可能就会有部分标注点不能够在容器范围中展示
加入如下方法:
function getZoom (maxLng, minLng, maxLat, minLat) {
var zoom = ["50","100","200","500","1000","2000","5000","10000","20000","25000","50000","100000","200000","500000","1000000","2000000"]//级别18到3。
var pointA = new BMap.Point(maxLng,maxLat); // 创建点坐标A
var pointB = new BMap.Point(minLng,minLat); // 创建点坐标B
var distance = map.getDistance(pointA,pointB).toFixed(1); //获取两点距离,保留小数点后两位
for (var i = 0,zoomLen = zoom.length; i < zoomLen; i++) {
if(zoom[i] - distance > 0){
return 18-i+2;//之所以会多3,是因为地图范围常常是比例尺距离的10倍以上。所以级别会增加3。
}
};
}
function setZoom(dataArr){
var lnglat=[{
lng:"",
lat:''
}];
if(dataArr.length>0){
console.log('lll')
lnglat[0].lng = dataArr[0].point.split("|")[0];
lnglat[0].lat = dataArr[0].point.split("|")[1];
console.log( lnglat[0].lng);
var maxLng = lnglat[0].lng;
var minLng = lnglat[0].lng;
var maxLat = lnglat[0].lat;
var minLat = lnglat[0].lat;
var res;
console.log('aaabbbb')
for (var i = dataArr.length-1; i >= 0; i--) {
console.log('dataArr')
lnglat[0].lng = dataArr[i].point.split("|")[0];
console.log(lnglat[0])
lnglat[0].lat =dataArr[i].point.split("|")[1];
res = lnglat[0];
if(res.lng > maxLng) maxLng =res.lng;
if(res.lng < minLng) minLng =res.lng;
if(res.lat > maxLat) maxLat =res.lat;
if(res.lat < minLat) minLat =res.lat;
};
console.log('dffdsssdf')
var cenLng =(parseFloat(maxLng)+parseFloat(minLng))/2;
var cenLat = (parseFloat(maxLat)+parseFloat(minLat))/2;
var zoom = getZoom(maxLng, minLng, maxLat, minLat);
map.centerAndZoom(new BMap.Point(cenLng,cenLat), zoom);
}else{
//没有坐标,显示全中国
map.centerAndZoom(new BMap.Point(103.388611,35.563611), 5);
}
}
然后调用,就可以实现计算出中心点,和缩放程度了,点多了基本也没有问题。
这就是我目前,调地图的一些记录。代码就不逐行在这里介绍了。百度地图API的开放文档里有很多资料~
地址贴下面吧,也方便我自己 日后复习:http://lbsyun.baidu.com/index.php?title=jspopular
Angular/Vue调用百度地图+标注点不显示图标+多标注点计算地图中心位置的更多相关文章
- Vue调用百度接口做百度搜索
这两天由于学习需要,需要用vue来调用api接口,但是以前没怎么接触过用vue来调用接口,不会没关系,发挥我们强大的学习能力,都不是事,学习了半天基本也就可以初级上手了,写篇随笔记录下来,方便以后回顾 ...
- vue中百度地图API的调用
1.使用百度地图api需要使用jsonp,来获取百度api的返回,因为vue不自带jsonp所以需要下载 安装jsonp npm i vue-jsonp -S 引入jsop import Vue fr ...
- Angular 调用百度地图API接口
Angular 调用百度地图API接口 参考原文:https://blog.csdn.net/yuyinghua0302/article/details/80624274 下面简单介绍一下如何在Ang ...
- 百度地图API显示多个标注点带检索框
通过百度地图的api,可以在地图上显示多个标注点,并给所有的标注点实现了带检索功能的信息框 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 T ...
- 百度地图API显示多个标注点并添加百度样式检索窗口
原作者博客地址:http://blog.csdn.net/a497785609/article/details/24009031 在此基础上进行了修改: 1.添加闭包,将i传入内部 2.添加地图和卫星 ...
- 调用百度地图Api实现的查看地图功能的小插件
1. 功能 bMap.js 可根据地理位置调用出百度地图,采用弹出框形式 2.用法 var city = '青岛市'; var address = '香港中路'; bMap.init({ city : ...
- 百度地图API显示多个标注点带百度样式信息检索窗口的代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- vue使用百度地图
1.在百度地图申请密钥:http://lbsyun.baidu.com/ 将 <script type="text/javascript" src="http:// ...
- 百度地图API显示多个标注点带提示的代码 / 单个标注点带提示代码
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
随机推荐
- ivew定制主题 less ^3.0 时报错 .bezierEasingMixin(); Inline JavaScript is not enabled. Is it set in your options?
按照 ivew 提供的方法定制主题,创建一个 less 文件,在其中覆盖变量,再在 main.js 中引入.戳这里 出现报错: 问题貌似是在于 less 版本...两种解决方法: 1.打开项目pack ...
- python tkinter button
"""小白随笔,大佬勿喷""" '''Button按钮 点击执行对应的命令''' import tkinter as tk #初始化窗口 w ...
- 018-并发编程-java.util.concurrent.locks之-ReentrantReadWriteLock可重入读写锁
一.概述 ReentrantLock是一个排他锁,同一时间只允许一个线程访问,而ReentrantReadWriteLock允许多个读线程同时访问,但不允许写线程和读线程.写线程和写线程同时访问.相对 ...
- java之动态代理
摘要 相比于静态代理,动态代理避免了开发人员编写各个繁锁的静态代理类,只需简单地指定一组接口及目标类对象就能动态的获得代理对象. 这里说的静态代理可以理解为之前使用的装饰者模式,从之前使用装饰者模式实 ...
- cds view join和association
1:创建两张表:ztt_teacher01 和ztt_teacher02 用于 cds view中的join和association 2:创建两个cds view:ztt_teacher01_id_n ...
- es6阮一峰读后感
不经意间看了你一眼(阮一峰的es6读后感)我自己常用的 字符串篇:ES6 为字符串添加了遍历器接口(详见<Iterator>一章),使得字符串可以被for...of循环遍历.只要有遍历器接 ...
- HBase笔记4(调优)
Master/Region Server调优 JVM调优 默认的RegionServer内存是1G,而Memstore默认占40%,即400M,实在是太小了,可以通过HBASE_HEAPSIZE参数修 ...
- 移动端长按响应事件以及阻止默认行为e.preventDefault()导致定时器setTimeout不能响应
手指触摸绑定: $(document).on('touchstart', '.photo', function(e){ currentIndex = parseInt($(this).index('. ...
- L1-049. 天梯赛座位分配
天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位 ...
- chrome内核浏览器插件的使用--Tampermonkey(油猴插件)
Tampermonkey(油猴插件),这个插件是一个用于改造你浏览器打开的网站的插件.它可以在你打开的网页中注入任意js脚本,以达到你想要的外加功能.可以说非常不错.很多时候也值得使用. 这是个chr ...