首页 > 其他分享 >根据地址获取经纬度

根据地址获取经纬度

时间:2024-09-03 15:52:46浏览次数:11  
标签:box console log 经纬度 获取 地址 jsonp lat lng

 

 1:安装依赖与引入

  1. 调用腾讯地图api前需要先去注册并申请key
  2. 在vue项目中的/public文件夹中的index.html的head中写入
  3. 安装lodash:npm install --save lodash
  4. 安装jsonp: npm install vue-jsonp --save
  5. main.js引入jsonp
import Vue from 'vue'
import { VueJsonp } from 'vue-jsonp'
Vue.use(VueJsonp)
Vue.config.productionTip = false

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

在public中的index.html文件中引入script标签加上链接

<script src="https://map.qq.com/api/gljs?v=1.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"></script>

代码

// template中
<template>
  <div id="app">
    <div class="box">
      <div class="search-box">
        <input 
            type="text" 
            v-model="searchValue" 
            class="search" 
            @input="searchHandler">
        <ul class="" v-if="kwData.length != 0">
          <li 
            v-for="(kw, i) in kwData" 
            :key="i" 
            @click="clickLiHandler(kw)">
            {{kw.title}}
          </li>
        </ul>
      </div>
      <h3>地址:{{address}}</h3>
      <div class="location">
        <h3>经度:{{lng}}</h3>
        <h3>纬度:{{lat}}</h3>
      </div>
      <br />
      <div id='mapContainer'></div>
    </div>
  </div>
</template>

// script
<script>
// import { debounce } from 'throttle-debounce'
// 安装lodash:npm install lodash --save  安装jsonp: npm install vue-jsonp --save
import lodash from 'lodash'
let that

export default ({
  data() {
    return {
      addValue: '',
      longitude: '',
      latitude: '',
      searchValue: '',
      kwData: '',
      clickLi: true,
      lng: '',
      lat: '',
      address: '',

      markerUrl: require("./assets/logo.png"),  // 点标记图片路径
      map: '',
      zoom: 4,  // 地图一开始的缩放级别
      center: new window.TMap.LatLng(39.984120, 116.307484),// 地图一开始的中心点
      markerLayer: '',
      geometries: []
    }
  },
  created() {
    that = this
  },
  mounted() {
    this.init1()
  },
  methods: {
    init1() {
      var drawContainer = document.getElementById('mapContainer');
      //设置中心点坐标   lat: 23.228237   lng: 113.273747
      var center = new window.TMap.LatLng(23.228237, 113.273747);
      this.map = new window.TMap.Map(drawContainer, {
        zoom: 9,
        pitch: 40,
        center: center,
        draggable: true,
        scrollable: true,
        mapStyleId: "style 1"
      });
      console.log('drawContainer', drawContainer)
      console.log(111, this.map)
      // 创建点聚合实例
      var markerCluster = new window.TMap.MarkerCluster({
        id: 'cluster',
        map: this.map,
        enableDefaultStyle: true, // 启用默认样式
        minimumClusterSize: 1, // 形成聚合簇的最小个数
        geometries: this.geometries,
        zoomOnClick: true, // 点击簇时放大至簇内点分离
        gridSize: 60, // 聚合算法的可聚合距离
        averageCenter: false, // 每个聚和簇的中心是否应该是聚类中所有标记的平均值
        maxZoom: 10 // 采用聚合策略的最大缩放级别
      })
      markerCluster
    },
    getKwd(val) {
      let kw = val
      console.log(111, kw)
      this.$jsonp('https://apis.map.qq.com/ws/place/v1/suggestion', {
        // key: 'ZBABZ-S5LKO-AQAWR-SNHUD-V3AQS-MSBMB',
        key: '6V3BZ-BZL6F-SAAJ6-JUS4K-ZCBNZ-6ZFGH',
        output: 'jsonp',
        keyword: kw,
        region: '广州市'
      })
        .then((res) => {
          console.log(res)
          if (res.status === 0) {
            console.log(res)
            this.kwData = res.data
            // 用获取到的经纬度,修改地图的中心点
            // this.changeCenter(res.result.location.lat.toFixed(6), 
            // res.result.location.lng.toFixed(6))
          } else {
            this.kwData = []
          }
        })
        .catch((e) => {
          console.log(e)
        })
    },
    searchHandler: lodash.debounce((event) => {
      console.log(222, this)
      console.log('event', event)
      that.getKwd(event)
    }, 500),
    clickLiHandler(kwObj) {  // 点击搜索关键词项
      // this.clickLi = false
      this.searchValue = kwObj.title
      this.lng = kwObj.location.lng
      this.lat = kwObj.location.lat
      this.address = kwObj.address
      this.geometries = [
        { // 点数组
          position: new window.TMap.LatLng(this.lat, this.lng)
        }]
      this.init1()
      console.log(this.lat, this.lng)
      this.kwData = []
    }
  }
})
</script>


<style lang="less">
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;

  .search {
    margin-top: 20px;
  }

  .box {
    margin: 0 auto;
    width: 1080px;
    margin-top: 80px;

    input {
      outline: none;
      width: 300px;
      height: 30px;
      border: 1px solid #ccc;
      padding: 10px;
      background-color: white;
      box-sizing: border-box;

    }

    .search-box {
      position: relative;

      ul {
          // border: 1px solid #ccc;
          // box-shadow: 1px, 1px, 1px, 1px, #ccc;
          box-shadow: 0px 5px 15px rgba(165, 165, 165, 0.438);
          width: 300px;
          position: absolute;
          left: 389px;
          bottom: -293px;
          box-sizing: border-box;
          padding: 10px;
          font-size: 12px;
          z-index: 100;
          background-color: white;

          li {
            list-style: none;
            padding: 5px;
            text-align: left;
            
            &:hover {
              background-color: #7ad9ff;
              cursor: pointer;
            }
          }
        }
    }

    .location {
      display: flex;
      text-align: center;
      justify-content: center;

      h2 {
        width: 200px;

        &::nth-child(1) {
          margin-right: 20px;
        }
      }
    }

  }

  .map {
    width: 700px;
    height: 700px;
  }

  #mapContainer {
    width: 600px;
    height: 600px;
    margin: 0 auto;
  }

}

#nav {
  padding: 30px;

  a {
    font-weight: bold;
    color: #2c3e50;

    &.router-link-exact-active {
      color: #42b983;
    }
  }
}
</style>

标签:box,console,log,经纬度,获取,地址,jsonp,lat,lng
From: https://blog.csdn.net/m0_63026408/article/details/141863417

相关文章

  • Windows编程:绕过UAC弹窗获取管理员权限
    在早些年写一个桌面软件时,需要管理员权限,但是又不想UAC弹窗,所以一般是直接将UAC的级别拉到最低,或者直接禁用UAC的相关功能。 什么是UAC(UserAccountControl)用户帐户控制(UAC)是一项Windows安全功能,旨在保护操作系统免受未经授权的更改。当对系统的更改需要管理员级权......
  • 2024年移动光猫获取超级密码
    温馨提示:本方法理论上适用于中国移动HG系列光猫光猫破解因地区、运营商、路由器和光猫型号而异,不能保证100%成功!遇到任何问题都可以在评论区留言,记得附上“地区+运营商+光猫型号”哦~本文为我原创,采用CCBY-NC-SA4.0许可协议进行授权,详见文末许可协议@牧瀬紅莉栖゚根据本......
  • 若楠带你初识OpenCV(1)-- 视频、图片基础处理,颜色获取
    文章目录OpenCV一、核心功能二、初识OpenCV1.安装OpenCV2.读取图片3.读取灰度图4.图片保存5.视频文件读取6.区域截取7.提取RGB通道颜色8.合并颜色通道总结OpenCVOpenCV(OpenSourceComputerVisionLibrary)是一个开源的计算机视觉和机器学习库,它主要用于实......
  • php获取FTP服务器中文件内容返回给前端
    有一个需求是访问存储在群辉SynologyNAS上的图片,https://ip:port/path/to/image.jpg,用浏览器打开会出现“您的连接不是私密/安全连接”错误。网上检索资料发现可能是因为缺少SSL证书的关系。引用https://www.cloudflare-cn.com/learning/ssl/connection-not-private-explaine......
  • 获取无重复字符的最长子串
    1/**2*获取无重复字符的最长子串3*@paramsrcStr4*@return5*/6publicstaticStringgetMaxLenNoRepeatChar(StringsrcStr){7if(srcStr==null){8returnnull;9}10i......
  • LiveGBS GB28181/GB35114流媒体平台中关于接口鉴权和流媒体地址鉴权的配置和使用
    @目录1、安全控制1.1、HTTP接口鉴权1.2、流地址鉴权2、401Unauthorized2.1、携带token调用接口2.1.1、获取鉴权token2.1.2、调用其它接口2.1.2.1、携带CookieToken2.1.2.2、携带URLToken2.2、play页面携带token2.3、携带StreamToken播放视频流2.3.1、获取视频流地址2.3.2、获取......
  • IP地址提示不是私密连接如何解决
    IP地址提示“不是私密链接”或“连接不是私密的”通常是由以下几个原因导致的:一、SSL/TLS证书问题证书过期:网站的SSL证书如果超过了有效期,浏览器会认为它不再可信,从而显示连接不安全的警告。证书不受信任:证书可能由不受浏览器信任的颁发机构(CA)签署,或者根本就没有被任何受信......
  • 阿里云2024年返点政策详解:企业如何最大化优惠获取
    代理商等级与返点比例阿里云代理商分为标准级、优选级、领先级、精英级和旗舰级五个等级,不同等级的代理商享受不同的返点比例。具体来说,标准级代理商返点比例为15%,优选级为20%,领先级为25%,精英级可达30%,旗舰级最高可达35%或更高。这些比例不仅反映了代理商的业绩水平,也体现......
  • 11.吐血整理sed入门到精通,sed语法,脚本命令,打印,替换,删除,插入,行替换,字符替换,保
    文章目录前言sed介绍1.sed介绍2.sed语法介绍3.sed脚本命令1.打印2.s替换3.删除脚本命令d3.插入脚本命令a/i4.行替换脚本命令c4.字符替换脚本y5.保存内容脚本w6.插入其他文本r6.中断退出脚本命令q脚本命令当中的地址[address]正则表达式sed[选项]1.sed-i选项2.sed-e......
  • uniapp 微信小程序获取头像,上传服务器
    html头像UI<buttonclass="user-avatarflex-center"open-type="chooseAvatar"@chooseavatar="onChooseAvatar"><imageclass="img":src="showAvatat()"mode="scaleToFill"/>......