当前位置:首页 > 技术交流 > 代码示例 > 正文内容

对接高德地图实例、获取当前城市、根据输入提示城市

薇薇4年前 (2020-11-17)代码示例1350

这是一个对接高德地图获取当前城市和根据输入提示城市的小例子,如有不足或困惑,请在评论区留言。

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>高德地图获取当前城市&输入提示</title>
    <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.15&key=您的key&plugin=AMap.CitySearch,AMap.Autocomplete,AMap.PlaceSearch"></script>
	
	<link rel="stylesheet" href="https://cache.amap.com/lbs/static/main1119.css"/>
	<script type="text/javascript" src="https://cache.amap.com/lbs/static/addToolbar.js"></script>
	<style>
		#amapInp{
			position: fixed;
			right: 0;
			margin: 10px;
		}
	</style>
</head>
<body>
	<div id="container"></div>
	<div id="amapInp">
		<input id="tipinput"/>
	</div>
<script type="text/javascript">
	//地图加载
	var map = new AMap.Map("container", {
	    resizeEnable: true
	});
	//异步方法
	Promise.prototype.finally = function (callback) {
		var P = this.constructor;
		return this.then(
			function(value){
				P.resolve(callback()).then(function(){
					return value
				})
			},
			function(reason){
				P.resolve(callback()).then(function(){
					throw reason
				})
			}
		);
	};
    //获取用户所在城市信息
    function showCityInfo() {
		return new Promise(function (resolve, reject) {
			var res;
			//实例化城市查询类
	        var citysearch = new AMap.CitySearch();
	        //自动获取用户IP,返回当前城市
	        citysearch.getLocalCity(function(status, result) {
	            if (status === 'complete' && result.info === 'OK') {
	                if (result && result.city && result.bounds) {
	                    var cityinfo = result.city;
	                    var citybounds = result.bounds;
	                    res = cityinfo;
	                }
	            } else {
	                res = result.info;
	            }
				resolve(res);
	        });
		});
    }
    showCityInfo().then(function(res){
		console.log('当前城市->',res);
		//输入提示
	    var autoOptions = {
	        city: res,
	        input: "tipinput"
	    };
	    var auto = new AMap.Autocomplete(autoOptions);
		var placeSearch = new AMap.PlaceSearch({
			map: map
		});  //构造地点查询类
	    //构造地点查询类
	    AMap.event.addListener(auto, "select", select);//注册监听,当选中某条记录时会触发
	    function select(e) {
			console.log(e.poi.district,e.poi.address,e.poi.name);
		    placeSearch.setCity(e.poi.adcode);
		    placeSearch.search(e.poi.name);  //关键字查询查询
	    }
	});
</script>
</body>
</html>


版权声明:本文由纵横四海博客发布,如需转载请注明出处。

部分资源整理自互联网,如侵权请联系站长删除!

本文链接:https://www.fxkgg.com/post/11.html

分享给朋友:

相关文章

利用正则表达式进行字符串转换,只保留数字或者文字C#.net

利用正则表达式进行字符串转换,只保留数字或者文字C#.net

        今天做项目,遇到转换问题;需要将“ abc2022 ”转换为2022,int.Parse()里面包含字符...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。