调用百度地图前需要完成的步骤:

1.申请百度账号

2.申请密钥(AK)。

具体api文档请点击 百度地图JavaScript API 查看

点击进入上面链接后,如下图,点击获取密钥,然后点创建应用。

图1

里面的配置参数,我们按照描述来就好,如图,我们取名 test,应用类型选择浏览器端,然后设置白名单。点击提交 就生成了我们需要的密钥(AK):

图3

3.用上一步生成的密钥,我们就可以调用百度地图实现我们的地图功能了。

代码如下:

// 以下代码是本人根据以前做的项目整理出来的,纯属手写,如有不规范处还请指出。

Document

*{margin:0;padding:0;}

.map{width: 500px;height: 500px;border:1px solid #666;float:left;}

.txt{float:left;margin-left:20px;}

input{width: 200px;height: 30px;display: block;margin-bottom:10px;border:1px solid #ccc;}

window.οnlοad=function(){

var oKeyword = document.getElementById("keyword");

var oProvince = document.getElementById("province");

var oCity = document.getElementById("city");

var oAddress = document.getElementById("address");

var foo = {

//后面的操作,都是把地址信息填入这个address,所以传给后台的时候就可以直接传这个数据

address : {

province : '',

provinceCode : '0',

city : '',

cityCode : '0',

district : '',

districtCode : '0',

longitude : '',

latitude : ''

},

// 根据point来初始化地图

initMap : function(lng,lat){

var _this = this;

var map = new BMap.Map("map"); // 创建Map实例

var point = new BMap.Point(lng, lat) // 创建点坐标

map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别

map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放

// map.addControl(new BMap.MapTypeControl()); //添加地图类型控件

// 地图的一些配置项

var navigationControl = new BMap.NavigationControl({

anchor: BMAP_ANCHOR_TOP_LEFT, // 靠左上角位置

type: BMAP_NAVIGATION_CONTROL_LARGE, // LARGE类型

enableGeolocation: true // 启用显示定位

});

map.addControl(navigationControl);// 缩放标尺

// 添加中心小红点

var centerPoint = new BMap.Marker(point);

map.addOverlay(centerPoint);

// 当前位置写入右侧input

var myGeo = new BMap.Geocoder();

myGeo.getLocation(new BMap.Point(lng, lat),function (result) {

_this.callBack(result,'drag')

});

_this.dragMap(map,centerPoint); //添加拖拽事件

//建立一个自动完成的对象,keyword出现下拉选择

var ac = new BMap.Autocomplete({

"input" : "keyword",

"location" : map

});

ac.addEventListener("onconfirm", function(e) {

// console.log(e)

var thisValue = e.item.value;

// console.log(thisValue)

var thisProvince = thisValue.province;

var thisCity = thisValue.city;

var thisDistrict = thisValue.district;

var thisStreet = thisValue.street;

var thisStreetNumber = thisValue.streetNumber;

var thisBusiness = thisValue.business;

var thisKey = thisProvince+thisCity+thisDistrict+thisStreet+thisStreetNumber+thisBusiness;

_this.searchByKey(map,thisKey,centerPoint);

})

},

// 地图拖拽

dragMap : function(map,centerPoint){

var _this = this;

var myGeo = new BMap.Geocoder();

map.addEventListener("dragging", function showInfo() {

var cp = map.getCenter();

centerPoint.setPosition(new BMap.Point(cp.lng, cp.lat));

map.panTo(new BMap.Point(cp.lng, cp.lat));

map.centerAndZoom(centerPoint.getPosition(), map.getZoom());

});

map.addEventListener("dragend",function showInfo() {

var cp = map.getCenter();

myGeo.getLocation(new BMap.Point(cp.lng, cp.lat),function (result) {

// console.log(result)

centerPoint.setPosition(new BMap.Point(cp.lng, cp.lat));

map.panTo(new BMap.Point(cp.lng, cp.lat));

map.centerAndZoom(centerPoint.getPosition(), map.getZoom());

_this.callBack(result,'drag')

});

});

},

// 地图拖拽后 和 输入关键字后选择 的回调函数

callBack : function(result,tag){

var _this = this;

var thisAddress = result.addressComponents;

if(thisAddress.province == "新疆维吾尔自治区" || thisAddress.province == "西藏自治区"){

alert("很抱歉,新疆和西藏地区暂不支持该服务,敬请期待。");

oKeyword.value = "";

oProvince.value = "";

oCity.value = "";

oAddress.value = "";

}else{

if(tag==='drag'){

oKeyword.value = result.address;

}

oProvince.value = thisAddress.province;

oCity.value = thisAddress.city;

oAddress.value = thisAddress.district + thisAddress.street + thisAddress.streetNumber;

// console.log(result);

_this.address.province = thisAddress.province;

_this.address.city = thisAddress.city;

_this.address.district = thisAddress.district;

_this.address.longitude = result.point.lng;

_this.address.latitude = result.point.lat;

}

console.log(JSON.stringify(_this.address))

},

// 输入关键字搜索,根据关键字更新地图并获取信息

searchByKey : function(map,keyword,centerPoint){

var _this = this;

var localSearch = new BMap.LocalSearch(map);

localSearch.enableAutoViewport();

localSearch.search(keyword);

localSearch.setSearchCompleteCallback(function (searchResult) {

if(searchResult && searchResult.getPoi(0)){

var poi = searchResult.getPoi(0);

if(poi.point){

map.centerAndZoom(poi.point,15);

centerPoint.setPosition(poi.point);

var myGeo = new BMap.Geocoder();

myGeo.getLocation(poi.point, function(result){

_this.callBack(result)

});

}

}

})

},

// 一般初始化地图,设置北京天安门

init : function(){

_this.initMap(116.404,39.915)

},

// 初始化当前城市

initLocalCity : function(){

var _this = this;

var map = new BMap.Map("map");

var myCity = new BMap.LocalCity();

myCity.get(function(result){

console.log(result);

// var point = result.center;

var lng = result.center.lng;

var lat = result.center.lat;

_this.initMap(lng,lat)

});

},

// 初始化当前位置

initLocalPoint : function(){

var _this = this;

if (navigator.geolocation) {

navigator.geolocation.getCurrentPosition(function(position) {

var lng = position.coords.longitude;

var lat = position.coords.latitude;

// console.log(lng+':'+lat);

var gpsPoint = new BMap.Point(lng, lat);

// 坐标转成百度需要的坐标,并初始化地图

// gpsPoint:转换前坐标,第二个参数为转换方法,0表示gps坐标转换成百度坐标,callback回调函数,参数为新坐标点

BMap.Convertor.translate(gpsPoint, 0, function(data){

_this.initMap(data.lng,data.lat);

})

})

} else {

alert("Your browser does not support Geolocation!");

}

}

}

// foo.init(); //以北京初始化地图

foo.initLocalCity(); //以当前城市初始化地图

// foo.initLocalPoint(); //以当前坐标初始化地图

// 输入关键字的时候,清空input里面的城市信息

oKeyword.οninput=function(){

oProvince.value = "";

oCity.value = "";

oAddress.value = "";

}

}

效果图:

图4

上面代码每块注释都有,我就不分成一块一块说了,直接拷贝过去是可以运行的。下面笔者说下引入的两个js:

第一个是百度地图必须引入的js,后面的ak就是我们刚刚创建应用的密钥。

第二个js的功能是:当我们想 以当前位置初始化 地图的时候,我们用到了 getCurrentPosition,但是用 getCurrentPosition获取到的坐标是 GPS 经纬度坐标,而百度地图的坐标是经过特殊转换的,所以,在获取定位坐标和初始化地图之间需要进行一步坐标转换工作,该转换方法百度API里面已经提供了,转换一个点或者批量装换的方法均有提供:

单个点转换需引用 http://developer.baidu.com/map/jsdemo/demo/convertor.js

批量转换需引用 http://developer.baidu.com/map/jsdemo/demo/changeMore.js

所以这里我们引入了前者。

(但是笔者发现,用getCurrentPosition这个方法的时候,体验不是很好,初始化页面的时候地图加载很慢。笔者正在寻找更好的办法,后续再更新!)

百度地图 前端html,前端js调用百度地图常用基本功能相关推荐

  1. html5百度地图选中标注点,js 调用百度地图api并在地图上进行打点添加标注

    最近要做一个网页,具体内容是:上边有一个标题,下边分成两块,左边是地图.并且地图上有两个点,点击两个点有相应的提示信息,显示数据库里最新的两条数据信息.右边是一些文字说明.本人刚开始学习,做的也不是很 ...

  2. JS调用百度api接口——实现简单的百度页面

    描述: JS调用百度api接口--实现简单的百度页面 效果: 实现: css文件: @charset "utf-8"; /* CSS Document */ *{margin: 0 ...

  3. google地图静态下载和js调用

    google地图静态下载和js调用 google staticmap使用 google地图js调用 google地图静态下载 1)注册google帐号 2)开启google static map功能 ...

  4. html 调用微信扫一扫,JS 调用微信扫一扫功能

    1.第一步: 设置调用微信js安全域名,就可以在该域名下调用微信的js接口 2.第二步: 将下面的js附在需要调用微信扫一扫的页面上,前提是需要引入微信的js[] 3.第三步: 后台获取签名代码: p ...

  5. 前端js调用百度翻译api接口

    目录 1.到百度翻译开放平台注册自己的账号 2.编辑html代码,设计一个简易的页面 3.远程调用百度翻译api 4.完整代码 5.测试 到百度翻译开放平台注册自己的账号 (1)进入网页:开放平台官网 ...

  6. 前端—基于Flask框架调用百度接口实现语音识别功能(使用蓝图blueprint)

    配合"基于Flask框架调用百度接口实现语音识别功能"使用的前端参考代码 后端代码链接 Python-基于Flask框架调用百度接口实现语音识别功能:基于Flask框架调用百度接口 ...

  7. js调用百度地图API,实现地图标注位置

    直接调用js就可以,通过设置中心位置来实现显示的中心确定,入图中的小括号:通过标注坐标来在地图中显示你自己的位置,如图"青岛农业大学"标注: 效果图如下: 代码如下: <di ...

  8. heatmap.js调用百度地图api做热力图

    做热力图使用heatmap.js模块然后就是来挑用百度地图api是他展现在百度地图上面 一首先你要申请一个百度地图api接口的密钥 申请网址 申请密钥之后,先登录上自己的账号然后创建应用 三就是来取一 ...

  9. html5手机百度地图js,移动端js调用百度地图的问题

    web端调用百度地图的时候,移动端浏览, 点击地图中的任意一个地标不是显示详情,但是在pc端是可以显示的. body, html {width: 100%;height: 100%;margin:0; ...

  10. js百度地图小车html,Web js实现百度地图实时轨迹画线 小车车行驶轨迹 | 彬菌

    版权声明:转载原创文章请以超链接形式请注明原文章出处,尊重作者,尊重原创! 恰饭广告 注意: 1.百度地图ak换成自己在百度地图官网申请 2.建议使用firefox浏览器,google被墙无法调用gp ...

最新文章

  1. Maven 传递性依赖
  2. 让别人不知道你的网站使用PHP
  3. 带你进入rest framework
  4. python json解析列表显示_求教一下 python 读取 json 以后,输出的问题(unicode 和中文显示)...
  5. 3. Qt Creator
  6. rust go java 性能_Java,Go和Rust之间的比较 - Dexter
  7. MyBatis复习(十):注解开发
  8. VS2013 未找到与約束ContractName
  9. python正则表达式提取字符串密码_用python正则表达式提取字符串
  10. 如何在不联网的情况下安装 Silverlight Tools
  11. 菜鸟教程python100-Python 基础教程 | 菜鸟教程
  12. 《明解C语言 入门篇》第4章 程序的循环控制 练习题解答
  13. 锐捷服务器虚拟化技术_2019云计算分类排行发布 星网锐捷勇夺两项榜首
  14. 年度最具特色生活类APP
  15. Python量化投资——年化收益26%,一个大小盘轮轮动量化投资策略的回测效果
  16. CSS3与页面布局学习总结(四)——页面布局大全
  17. ps如何增加可撤回的步数
  18. fgets函数的使用
  19. PostGIS 笔记
  20. python 结构体指针_C语言结构体指针(指向结构体的指针)详解

热门文章

  1. opencv中axis(轴)概念的理解
  2. oracle dbms_utility,dbms_utility的两个有用方法
  3. 中标麒麟linux操作系统下Chrome/Chromium的安装
  4. 智遥工作流将数据导出到Excel分析
  5. Flink reduce详解
  6. matlab画colormap
  7. android 入门教程
  8. 拖欠银行贷款的后果有哪些
  9. 张铁林的十年英国留学生涯
  10. 怎么用计算机算组合数c,排列组合c怎么算 公式是什么