JS——基于百度地图 关键字提示输入+地址逆解析

  1. 引入百度jsapi

1.https://api.map.baidu.com/api?v=2.0&ak=自己申请的AK
2.https://api.map.baidu.com/api?type=webgl&v=1.0&ak=自己申请的AK

  1. 创建baiduMap.js
// 初始化百度地图API功能
var map, ac, myValue, geoc, addressCallback , config

/*初始化地图*/
function initializeamap(obj) {
	addressCallback = obj.coordinate || function(res){console.log(res)}
	map = new BMap.Map(obj.amapid)
	geoc = new BMap.Geocoder()
	map.centerAndZoom(obj.cityname || "北京", obj.zoom || 12)
	ac = new BMap.Autocomplete({
		"input": obj.suggestId, "location": map
	})
	ac.addEventListener("onconfirm", function (e) {    //鼠标点击下拉列表后的事件
		var _value = e.item.value;
		myValue = _value.province + _value.city + _value.district + _value.street + _value.business;
		setPlace();
	})
	map.addEventListener("click",function (e) {
		renderingPlace({
			lng:e.point.lng,
			lat:e.point.lat
		})
	})
}


/*设置地点*/
function setPlace() {
	function myFun() {
		var pp = local.getResults().getPoi(0).point//获取第一个智能搜索的结果
		renderingPlace(pp)
	}
	var local = new BMap.LocalSearch(map, { //智能搜索
		onSearchComplete: myFun
	});
	local.search(myValue);
}

/*渲染地点*/
function renderingPlace(point){
	map.clearOverlays()
	var label = new BMap.Label("当前坐标:"+point.lng+','+point.lat),
		marker = new BMap.Marker(point)
	marker.setLabel(label)
	map.centerAndZoom(point, 19); //设置地图中心点
	map.addOverlay(marker);
	callback(point)
}

/*回调数据*/
function callback(point){
	geoc.getLocation(point,function (res) {
		addressCallback(res)
	})
}

/*切换城市*/
function changeCity(cityName) {
	var cityName_ = cityName
	if(map){
		map.reset()
		map.centerAndZoom(cityName_, 12);
		setTimeout(function () {
			ac.setLocation(map)
		},100)
	}
}
  1. 引入baiduMap.js后初始化百度地图
/*初始化百度地图*/
initializeamap({
	amapid: 'l-map', //地图画布id
	suggestId: 'suggestId', //输入框id
	cityname:"北京",//默认城市
	zoom: "12",//地图缩放层次
	coordinate: function (item) { //回调数据
		console.log(item)
	}
})
  1. 切换城市
changeCity("南山区")

效果(html部分自行更改)
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值