Angular/Vue调用百度地图+标注点不显示图标+多标注点计算地图中心位置

整理一下~

一、在vue中调用百度地图

首先当然是申请百度密匙(很简单,不多说)

1、在index.html文件中引入百度地图JavaScript API接口:

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=密匙部分哦"></script>

2、在bulid/webpack.base.conf.js配置文件中配置BMap,在module.exports 中与entry平级

3、在地图组件中import BMap:

import BMap from ‘BMap‘

4、创建容器,用来显示百度地图,注意给高宽

5、还有一个比较好用的白兔地图生成器,可以实现基本的需求吧,标路线之类的我还没有用过,这儿没有。

http://api.map.baidu.com/lbsapi/creatmap/index.html

这个生成器可以生成代码,有些注释,一目了然。不过多介绍了。

 

二、在Angular中调用百度地图

一样的在index.html文件中引入百度地图JavaScript API接口,如上。基本的就不多说了

下面记录一下过程中的问题:

一、标注点的图标不显示

即,标注点显示在地图中,但是绿色的水滴形标记未能显示。在生成器中的代码主要是这几行:

查了一下,我这边的原因是图片地址不对,更换图片地址后就正确了。

图片地址改为如下就可以成功显示了:

http://api.map.baidu.com/lbsapi/creatmap/images/us_mk_icon.png

二、另一个大问题就是代码中会有一个中心点经纬度,设置这个中心点的经纬度之后可能就会有部分标注点不能够在容器范围中展示

加入如下方法:

 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

原文地址:https://www.cnblogs.com/lian-dong/p/9862795.html

时间: 2024-08-11 03:28:34

Angular/Vue调用百度地图+标注点不显示图标+多标注点计算地图中心位置的相关文章

vue 调用百度地图API生成地图

1.项目根目录下下载百度地图插件 npm install vue-baidu-map –save 2.在首页index.html中引入百度地图: <script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=秘钥"></script> 申请密钥地址  :http://api.map.baidu.com/lbsapi/createmap/index.html 3

调用百度地图

偶也能做百度地图了,嘻嘻,赞一个,废话不多说,代码敬上: 这个简单的样式:强大了可以自己改的 <style type="text/css">    .iw_poi_title {        color: #CC5522;        font-size: 14px;        font-weight: bold;        overflow: hidden;        padding-right: 13px;        white-space: now

JS调用百度地图拼接成路径,C#保存地图图片到本地

昨日公司要求做一个静态百度地图图片生成到本地的功能,以前没做过,这次小小总结一下 百度地图API自己看(http://developer.baidu.com/map/index.php?title=static) 当然首先得调用百度地图API,无非就是前台后台,,我是用JS写的,(http://www.cnblogs.com/kulong995/p/3368048.html)这个人写的不错,是用c#写的调用百度地图,写的很不错,可以看看 百度地图是由一堆乱七八糟的数据拼接出来的路径,然而保存图片

【常用】网页调用百度地图美化版

功能描述: 在web网页中调用百度地图API,在公司联系方式页面显示地图.(百度地图api版本2.0) 设置了百度自带的“高端灰”风格,加入了标注,和信息窗口,以及点击事件,支持鼠标滚轮缩放. 展示页代码面: <div id="ContactMap" style="width:800px;height:500px;"></div> <script type="text/javascript" src="ht

C#调用百度地图API入门&amp;解决BMap未定义问题

本文主要是最近帮助好友研究JavaScript的百度地图API,同时显示到C# Winform界面.同时遇到了BMap未定义的错误(BMap is not defined)及解决方法.以前写过基于Android的百度地图,其实原理都差不多,希望文章对你有所帮助吧! 一. C#显示百度地图 使用C# Winform显示百度地图主要包括两个步骤: 1.调用百度地图API,通过申请的密钥AK访问JavaScript版本地图: 2.再在C#中webBrowser浏览器控件中访问JS文件,显示地图到窗口.

百度地图API显示多个标注点带提示的代码

效果如图: 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>百度地图API显示多个

百度地图API显示多个标注点并添加百度样式检索窗口

<%@ page language="java" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

网站调用百度地图 根据地址查询经纬度

百度地图API简单应用—根据地址查询经纬度 简单几步注册获得一个ak,就能直接调用(PS:好像1.3版本前的无需注册获取ak,就能直接调用api). 闲话不多,下面就直接给大家介绍下,具体要怎么调用百度地图API.首先新建一个html页面.然后引用api <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transi

调用百度地图Api实现的查看地图功能的小插件

1. 功能 bMap.js 可根据地理位置调用出百度地图,采用弹出框形式 2.用法 var city = '青岛市'; var address = '香港中路'; bMap.init({ city : city, address : address }); 3.依赖 需自行引入jquery以及layer.js(弹出框插件) 4. 局限 各模块之间耦合度过于紧密,插件化程度太低,依赖性太强 5. demo下载 地址 :http://pan.baidu.com/s/1pJAxOnT 6. 源码预览