[百度地图]web集成百度地图点击获取位置信息,以及搜索获取位置信息案列

<!-- 百度地图api -->
<script type="text/javascript" src="https://api.map.baidu.com/api?type=webgl&v=2.0&ak=您的秘钥"></script>
// 百度地图API功能
function G(id) {
   return document.getElementById(id);
}
//百度地图初始化,检索
var map = new BMapGL.Map('container');
map.centerAndZoom('西安市', 13);
map.enableScrollWheelZoom(true);
var geoc = new BMapGL.Geocoder();
map.addEventListener('click', function(e){
   //清除地图上所有的覆盖物
   map.clearOverlays();
   var pt = e.latlng;
   var marker = new BMapGL.Marker(new BMapGL.Point(pt.lng, pt.lat));
   map.addOverlay(marker);
   geoc.getLocation(pt, function(rs){
      var addComp = rs.addressComponents;
      $("#startProvince").val(addComp.province);
      $("#startCity").val(addComp.city);
      if (""==addComp.district && addComp.district == undefined || addComp.district == null){
         $("#startCountry").val(addComp.city);
      }
      $("#startCountry").val(addComp.district);
      $("#stationName").val(addComp.province + addComp.city  + addComp.district  + addComp.street  + addComp.streetNumber);
      $("#address").val(addComp.province + addComp.city  + addComp.district  + addComp.street  + addComp.streetNumber);
      $("#stationLon").val(pt.lng);
      $("#stationLat").val(pt.lat);
   })
})
var ac = new BMapGL.Autocomplete(    //建立一个自动完成的对象
   {"input" : "tipinput"
      ,"location" : map
   });
ac.addEventListener("onhighlight", function(e) {  //鼠标放在下拉列表上的事件
   var str = "";
   var _value = e.fromitem.value;
   var value = "";
   if (e.fromitem.index > -1) {
      value = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
   }
   str = "FromItem<br />index = " + e.fromitem.index + "<br />value = " + value;

   value = "";
   if (e.toitem.index > -1) {
      _value = e.toitem.value;
      value = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
   }
   str += "<br />ToItem<br />index = " + e.toitem.index + "<br />value = " + value;
   G("searchResultPanel").innerHTML = str;
});

var myValue;
ac.addEventListener("onconfirm", function(e) {    //鼠标点击下拉列表后的事件
   var _value = e.item.value;
   myValue = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
   G("searchResultPanel").innerHTML ="onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue;
   setPlace();
});
function setPlace(){
   map.clearOverlays();    //清除地图上所有覆盖物
   function myFun(){
      var pp = local.getResults().getPoi(0).point;    //获取第一个智能搜索的结果
      map.centerAndZoom(pp, 18);
      map.addOverlay(new BMapGL.Marker(pp));    //添加标注
      geoc.getLocation(pp, function(rs){
         var addComp = rs.addressComponents;
         $("#startProvince").val(addComp.province);
         $("#startCity").val(addComp.city);
         if (""==addComp.district && addComp.district == undefined || addComp.district == null){
            $("#startCountry").val(addComp.city);
         }
         $("#startCountry").val(addComp.district);
         $("#stationName").val(myValue);
         $("#address").val(addComp.province + addComp.city  + addComp.district  + addComp.street  + addComp.streetNumber);
         $("#stationLon").val(pp.lng);
         $("#stationLat").val(pp.lat);
      })
   }
   var local = new BMapGL.LocalSearch(map, { //智能搜索
      onSearchComplete: myFun
   });
   local.search(myValue);
}

<div id="mapSearch" style="position: absolute; z-index: 100;  background: #fff;padding: 10px 16px; margin-left: 20px; margin-top: 20px;">
	<div class="input-item">
		<span class="input-item-text" style="width:8rem; font-size: 16px">请输入关键字&nbsp;&nbsp;&nbsp;&nbsp;</span>
		<input id='tipinput' type="text">
	</div>
	<div id="searchResultPanel" style="border:1px solid red;width:150px;height:400px; position: absolute;top:20px;display:none;"></div>
</div>
<div  class="col-xs-8" id = "container" style="height: 400px">
	<div class="info">
	</div>
</div>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
首先需要在Vue项目中引入百度地图JavaScript API。 1. 在`index.html`文件中添加百度地图JavaScript API的引用: ```html <!-- 引入百度地图 JavaScript API --> <script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=您的AK"></script> ``` 其中,`AK`是你在百度地图开发者中心中申请的密钥。 2. 在Vue组件中添加地图容器和定位按钮: ```html <template> <div> <!-- 地图容器 --> <div id="map"></div> <!-- 定位按钮 --> <button @click="getLocation">定位</button> </div> </template> ``` 3. 在Vue组件的`<script>`标签中编写JavaScript代码: ```js export default { data() { return { // 地图对象 map: null, // 定位标记 marker: null, // 定位信息 location: null }; }, methods: { // 初始化地图 initMap() { const map = new BMap.Map('map'); map.centerAndZoom(new BMap.Point(116.404, 39.915), 18); this.map = map; }, // 获取当前位置信息 getLocation() { const geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition( position => { this.location = position; this.showLocation(); }, { enableHighAccuracy: true } ); }, // 在地图上显示位置信息 showLocation() { const { point, address } = this.location; if (!this.marker) { const marker = new BMap.Marker(point); this.map.addOverlay(marker); this.marker = marker; } else { this.marker.setPosition(point); } this.map.panTo(point); alert(`当前位置:${address}`); } }, mounted() { this.initMap(); } }; ``` 在上述代码中,我们首先定义了`map`、`marker`和`location`三个变量,分别表示地图对象、定位标记和位置信息。在`initMap`方法中,我们创建了一个地图对象并将其初始化。在`getLocation`方法中,我们通过`BMap.Geolocation`获取当前位置信息,并将其保存在`location`变量中。然后我们调用`showLocation`方法,在地图上显示定位标记,并弹窗显示当前位置信息

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑风尘灬

如果有用,请博主喝杯咖啡叭

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值