公司一般都有通讯和住址的统计,但是文字化的表格根本就不知道住在哪。

用百度地图就可以轻松解决,

而且公司还经常人员变动,读取excel中的内容,就不用每次还要更改地图文件了。

在遇到需要聚餐在地图中标点时,在文本框中输入地址,多个地址需要用英文逗号“,”分割。

为了单个文件的方便,存放更雅观这里引用的全是网络地址:

 

<script src="http://api.map.baidu.com/getscript?v=2.0&ak=你的密钥"></script>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script src="https://cdn.bootcss.com/xlsx/0.14.3/xlsx.full.min.js"></script>
<script src="https://cdn.bootcss.com/angular.js/1.7.4/angular.min.js"></script>

下面是全部js代码:

 // 百度地图API功能
var map = new BMap.Map("l-map");
map.centerAndZoom(new BMap.Point(114.413121, 30.480956), 13);
map.enableScrollWheelZoom(true);
var index = 0;
var myGeo = new BMap.Geocoder();
var adds = [];
var names = [];
var myFile;
function change() {
console.log("a");
var adds = document.getElementById("chi").value.split(',');
for (i in adds) {
geocodeSearch("", adds[i], 1)
}
}; function bdGEO(flag) {
for (var i = 0; i < adds.length; i++) {
var name = names[i];
var add = adds[i];
geocodeSearch(name, add, flag);
}
}
function geocodeSearch(name, add, flag) {
console.log(add);
myGeo.getPoint(add, function (point) {
if (point) {
var address = new BMap.Point(point.lng, point.lat);
addMarker(address, new BMap.Label(name + "\n" + add, { offset: new BMap.Size(20, -10) }), flag);
}
}, "武汉市");
} function getMyIcon(flag) {
var path = "http://api.map.baidu.com/img/markers.png";
var p;
if (flag == 0)
p = {
offset: new BMap.Size(10, 25), // 指定定位位置 imageOffset: new BMap.Size(0, -275) // 设置图片偏移
};
else if (flag == 1)
p = {
offset: new BMap.Size(10, 25), // 指定定位位置 imageOffset: new BMap.Size(0, -300) // 设置图片偏移
}; return myIcon = new BMap.Icon(path, new BMap.Size(20, 25), p); }
// 编写自定义函数,创建标注
function addMarker(point, label, flag) {
var marker = new BMap.Marker(point, { icon: getMyIcon(flag) });
map.addOverlay(marker);
marker.setLabel(label);
} (function () {
var app = angular.module('myApp', []);
app.controller('MyController', ['$scope', myController]); var excelJsonObj = [];
function myController($scope) {
$scope.uploadExcel = function () {
myFile = document.getElementById('file');
var input = myFile;
var reader = new FileReader();
reader.onload = function () {
var fileData = reader.result;
var workbook = XLSX.read(fileData, { type: 'binary' }); // 表格的表格范围,可用于判断表头是否数量是否正确
var fromTo = '';
var sheet0 = workbook.Sheets[workbook.SheetNames[0]];//sheet0代表excel表格中的第一页
var str = XLSX.utils.sheet_to_json(sheet0);//利用接口实现转换。
names = [];
adds = [];
for (var i in str) {
names.push(str[i].__EMPTY_1);
adds.push(str[i].__EMPTY_3);
}
bdGEO(0); };
//获取地图上所有的覆盖物
var allOverlay = map.getOverlays();
for (var i = 1; i < allOverlay.length; i++) {
if (allOverlay[i].toString() == "[object Marker]") {
// if (allOverlay[i].getPosition().lng == longitude(待删除标注的经度) && allOverlay[i].getPosition().lat == latitude(待删除标注纬度)) {
// map.removeOverlay(allOverlay[i]);
// }
map.removeOverlay(allOverlay[i]);
console.log(allOverlay[i]);
}
}
if (document.getElementById("chi").value != "") {
change();
}
if (myFile.value != "")
reader.readAsBinaryString(input.files[0]); };
}
})(); var comAddr = new BMap.Point(114.413121, 30.480956);
var label = new BMap.Label("公司地址", { offset: new BMap.Size(20, -10) });
label.setStyle({
color: "#f11",
borderColor: "#000",
backgroundColor: "#aaa"
});
addMarker(comAddr, label, 1);

附上源码下载地址:(含通讯录模板)

https://download.csdn.net/download/qq_38415250/11239541

转载请注明出处。

基于百度地图JavaScript API,员工住址统计的更多相关文章

  1. 百度地图JavaScript API覆盖物旋转时出现偏移

    在项目中,调用百度地图JavaScript API,做覆盖物的旋转再添加到地图上,结果出现偏移了. 调试过程中的效果图: 发现图片的旋转并不是按车子的中心来的,而是之外的一个点.最后发现犯了一个很细节 ...

  2. 百度地图JavaScript API使用

    最近在完成优达学城前端开发(入门)课程的P4项目中,要求调用google地图进行交互,项目已提供部分js代码和html代码.但在申请google地图API密钥时由于网络等原因,打不开或者连接超时,所以 ...

  3. 百度地图JavaScript API经纬度查询-MAP

    百度地图JavaScript API经纬度查询-MAP-ABCDEFGHIJKMHNOPQRSTUVWXYZ: 搜索:<input type="text" size=&quo ...

  4. 【百度地图JavaScript API】手机端浏览器定位的实现

    [百度地图JavaScript API]手机端浏览器定位的实现 https://blog.csdn.net/xiao190128/article/details/72579476

  5. 百度地图 Javascript API 笔记

    因为最近的一个项目用到,所以自己整理了一下遇到的一些坑 自己写了一个类库来二次封装用于调起常用的功能:https://github.com/iRuxu/iBMap 快速文档链接 Javascript ...

  6. 百度地图JavaScript API自定义覆盖物、自定义信息窗口增删时的显示问题

    项目中,需求:在百度地图上实时画出车辆,并能点击车辆弹出信息框查看实时信息. 实现:通过不停的画覆盖物并删除掉.点击覆盖物时弹出信息窗口. 问题:删除掉覆盖物后信息窗也删除掉了.因为信息窗是建立在覆盖 ...

  7. 百度地图JavaScript API本地搜索的结果面板

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  8. 百度地图 JavaScript API

    最近有点懒  项目结尾了  完了好长时间 没有去总结项目中的问题 想了下还是写写吧 这是一个关于百度地图的 网页展示 <!DOCTYPE html><html><head ...

  9. 百度地图JavaScript API获取用户当前经纬度和详细地理位置,反之通过详细地理位置获取当前经纬度

    前言: 前端时间刚好使用了百度地图的js api定位获取用户当前经纬度并获取当前详细位置和通过当前用户详细地理位置换取用户当前经纬度坐标的功能,为了方便下次找起来方便一些自己在这里记录一下,希望也能够 ...

随机推荐

  1. springboot搭建dubbo+zookeeper简单案例

    背景:只是自己使用单机版zookeeper搭建dubbo的一个学习案例,记录成功的过程 1.搭建zookeeper坏境 使用docker来构建环境 1.1 拉取镜像:docker pull zooke ...

  2. Ingress-Nginx

    注意:  本文只用的ingress-nginx版本为0.24.1,可在官方网站自行下载 https://github.com/kubernetes/ingress-nginx 一.Ingress-Ng ...

  3. 【Appium】Android 按键码

    keycode也是appium很强大的功能,鉴于官网不翻墙无法打开,特此备忘. 电话键     KEYCODE_CALL 拨号键 5 KEYCODE_ENDCALL 挂机键 6 KEYCODE_HOM ...

  4. 浅析Volatile关键字

    浅析Volatile关键字 在java中线程并发中,线程之间通信方式分为两种:共享内存和消息传递.共享内存指的是多个线程之间共享内存的属性状态:消息传递指的是线程之间发送信息来通信.在介绍volati ...

  5. Java 获取对象全部属性 包括 父类属性

    今天由于业务需要,看一段数据库中的表转化成用户可以看懂的数据,也就是把一些字段比如Date用ms存的,转化为'yyyy-MM-dd'这种格式,但是由于字段太多,所以利用Java反射机制自带的BeanU ...

  6. Java多线程编程核心技术-第1章-Java多线程技能-读书笔记

    第 1 章 Java 多线程技能 本章主要内容 线程的启动 如何使线程暂停 如何使线程停止 线程的优先级 线程安全相关的问题 1.1 进程和多线程的概念及线程的优点 进程是操作系统结构的基础:是一次程 ...

  7. 学习:API断点

    API的介绍:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而 ...

  8. Linux操作中应该注意的问题

    1.覆盖问题 (1)cp覆盖 (2)scp覆盖 (3)重定向 “>” 覆盖 (4)tar覆盖 2.磁盘问题 (1)GPT格式的分区会覆盖磁盘上原有的分区 (2)在/etc/fstab中写入完成后 ...

  9. p1842 奶牛玩杂技 题解

    感觉其他dalao讲的不是很明白啊,我这样的蒟蒻看不懂啊. 在luogu这个dalao遍地的地方我蒟蒻看个题解也不明白,我为跟我同病相怜的蒟蒻写一篇吧 其实真是不太明白,大部分题解都是只说 体重大的在 ...

  10. linux常用命令-nginx常用命令

    1.ctrl+alt+f2切换到命令界面 2.ifconfig查看IP 或者IP ADDR(en33 inter) 3.使用putty终端进行交互式操作 4.shell:提供用户输入的命令解释器 常用 ...