百度地图-根据地址获取经纬度

百度地图-根据地址获取经纬度

Javascript

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>根据地址获取经纬度</title>
		<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=密钥"></script>
		<style>
			.anchorBL {
			  display:none;
			}
		</style>
	</head>
	<body>
		<div class="box" style="width: 700px; margin: 150px auto;">
			<input type="text" style="margin-bottom: 20px;"
				placeholder="请输入查询地址" id="addr">
			<button onclick="getpoint()">获取经纬度</button>
			<div id="map" style="width: 100%; height: 500px;"></div>
			<div id="latlng"></div>
		</div>
	</body>
	<script>
		const map = new BMap.Map('map');
		map.centerAndZoom('北京', 15)
		map.enableScrollWheelZoom(); // 启用滚轮放大缩小,默认禁用
		map.enableContinuousZoom(); // 启用地图惯性拖拽,默认禁用
		const localSearch = new BMap.LocalSearch(map);
		localSearch.enableAutoViewport(); // 允许自动调节窗体大小
		function getpoint () {
			const val = document.getElementById('addr').value;
			localSearch.setSearchCompleteCallback(function(res) {
				map.clearOverlays(); // 清空原来的标注
				const poi = res.getPoi(0);
				map.centerAndZoom(poi.point, 15);
				// 创建标注,为要查询的地方对应的经纬度
				const marker = new BMap.Marker(new BMap.Point(poi.point.lng, poi.point.lat));
				map.addOverlay(marker);
				const latlng = document.getElementById('latlng');
				latlng.innerHTML = `经度:${poi.point.lng},纬度:${poi.point.lat}`;
			});
			localSearch.search(val);
		}
	</script>
</html>

angularJs

  1. 引入百度地图api:
    注意:需在index.html文件中进行引用
<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=密钥"></script>
  1. 创建map组件文件夹及三个文件如下:
    在这里插入图片描述
  2. html文件:
<div class="main-content">
  <div id="map"></div>
</div>
  1. css文件:
.main-content {
  width: 100%;
  height: 100%;
}
#map {
  width: 100%;
  height: 100%;
  margin: 0px;
  padding: 0px;
}
.anchorBL {
  display: none;
}
  1. ts文件:
import { Component, OnInit, AfterViewInit, Input, OnChanges } from '@angular/core';
import { NzMessageService } from "ng-zorro-antd";
declare var BMap: any;
@Component({
  selector: 'my-map',
  templateUrl: './map.component.html',
  styleUrls: ['./map.component.css'],
})
export class mapComponent implements OnInit, AfterViewInit, OnChanges {
  constructor(
    private _message: NzMessageService
  ) { }
  @Input() addr: any;
  map = null; //创建地图实例
  ngOnInit(): void {
    this.map = new BMap.Map('map');
    const point = new BMap.Point(116.404, 39.915); // 创建点坐标
    this.map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别
    this.map.enableScrollWheelZoom(true); // 开启鼠标滚轮缩放
  }
  ngAfterViewInit() {
    setTimeout(() => { }, 10);
  }
  ngOnChanges() {
    const that = this;
    if (this.map) {
      const maps = this.map;
      const localSearch = new BMap.LocalSearch(maps);
      localSearch.enableAutoViewport(); //允许自动调节窗体大小
      maps.clearOverlays(); //清空原来的标注
      localSearch.setSearchCompleteCallback(function(searchResult) {
        const poi = searchResult.getPoi(0);
        if (poi) {
          maps.centerAndZoom(poi.point, 15);
          // 创建标注,为要查询的地方对应的经纬度
          const marker = new BMap.Marker(new BMap.Point(poi.point.lng, poi.point.lat));
          maps.addOverlay(marker);
        } else {
          that._message.warning('无法定位');
        }
      });
      localSearch.search(this.addr);
    }
  }
}
  1. 因为对angular语言不熟悉,为防止误导,此处省略组件注册步骤;
  2. 在html中引入使用:
<my-map style="height: 500px; width:700px;" [addr]="addr"></my-map>
addr = ''; // 完整地址,用于地图标点
setAddr() {
    console.log('baidu-map');
    this.addr = this.inputVal; // 此处为输入地址位置
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值