web前端 腾讯地图 根据详细地址获取经纬度

17 篇文章 0 订阅

先去腾讯地图官网申请开发密钥(Key) 

https://lbs.qq.com/guides/startup.html

根据提示来操作就好。

申请完后继续以下操作:是jsonp的跨域请求

//jsonp的跨域请求
$.ajax({
    type: "get",
    dataType: 'jsonp',
    data: {
        key: "", // 填申请到的key
        address: "", //具体的地址
        output: 'jsonp' //返回格式:支持JSON/JSONP,默认JSON
    },
    jsonp: "callback",
    jsonpCallback: "QQmap",
    url: "https://apis.map.qq.com/ws/geocoder/v1/?",
    success: function (json) {
        if(json.status == 0) {
            lat = json.result.location.lat;
            lng = json.result.location.lng;
            console.log('经度:', lat);
            console.log('纬度:', lng);
        } else {
            alert('错误信息:', json.message);
        }
    },
    error: function (err) { 
        alert("异常错误,请刷新浏览器后重试");
    }
})

地址解析(地址转坐标)  官方文档地址: https://lbs.qq.com/webservice_v1/guide-geocoder.html

请求URL

该请求为GET请求

https://apis.map.qq.com/ws/geocoder/v1/?address=

请求参数

参数必填说明示例
address地址(注:地址中请包含城市名称,否则会影响解析效果)address=北京市海淀区彩和坊路海淀西大街74号
region指定地址所属城市region=北京
key开发密钥(Key)key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77
output返回格式:支持JSON/JSONP,默认JSONoutput=json
callbackJSONP方式回调函数callback=function1

响应结果

名称类型必填说明
statusnumber状态码,0为正常
310请求参数信息有误
311Key格式错误
306请求有护持信息请检查字符串
110请求来源未被授权
messagestring状态说明
resultobject地址解析结果
 locationstring解析到的坐标
 latnumber纬度
lngnumber经度
address_componentsobject解析后的地址部件
 provincestring
citystring
districtstring区,可能为空字串
streetstring街道,可能为空字串
street_numberstring门牌,可能为空字串
ad_infoobject行政区划信息
 adcode  行政区划代码
similaritynumber即将下线,由reliability代替
deviationnumber即将下线,由level代替
reliabilitynumber可信度参考:值范围 1 <低可信> - 10 <高可信>
我们根据用户输入地址的准确程度,在解析过程中,将解析结果的可信度(质量),由低到高,分为1 - 10级,该值>=7时,解析结果较为准确,<7时,会存各类不可靠因素,开发者可根据自己的实际使用场景,对于解析质量的实际要求,进行参考。
levelnumber解析精度级别,分为11个级别,一般>=9即可采用(定位到点,精度较高) 也可根据实际业务需求自行调整,完整取值表见下文。
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是详细的步骤: 1. 在 HTML 地图容器和标记容器: ```html <template> <div class="map-container"> <div class="map" ref="map"></div> <div class="marker" ref="marker"></div> </div> </template> ``` 2. 在 `setup()` 函数引入腾讯地图的 API 和样式文件,并创建地图和标记: ```javascript import { onMounted, ref } from "vue"; export default { setup() { // 引入腾讯地图 API 和样式文件 const script = document.createElement("script"); script.type = "text/javascript"; script.src = "http://map.qq.com/api/js?v=2.exp&key=YOUR_KEY_HERE"; script.onload = () => { // 创建地图和标记 const map = new qq.maps.Map(document.getElementById("map"), { center: new qq.maps.LatLng(39.916527, 116.397128), zoom: 13, }); const marker = new qq.maps.Marker({ position: map.getCenter(), draggable: true, map: map, }); // 监听标记拖动结束事件 qq.maps.event.addListener(marker, "dragend", function (event) { // 获取标记位置的经纬度信息 const latLng = marker.getPosition(); console.log("经度:" + latLng.getLng() + ",纬度:" + latLng.getLat()); }); }; document.head.appendChild(script); return {}; }, }; ``` 3. 在 `mounted()` 函数获取地图和标记容器的 DOM 节点: ```javascript import { onMounted, ref } from "vue"; export default { setup() { // ... onMounted(() => { // 获取地图和标记容器的 DOM 节点 const mapContainer = document.getElementById("map"); const markerContainer = document.getElementById("marker"); // 设置地图和标记容器的宽度和高度 mapContainer.style.width = "100%"; mapContainer.style.height = "400px"; markerContainer.style.width = "32px"; markerContainer.style.height = "32px"; // 将标记容器作为标记的图标 marker.setIcon( new qq.maps.MarkerImage( "http://open.map.qq.com/doc/img/n_marker.png", null, null, null, new qq.maps.Size(32, 32) ) ); marker.set("offset", new qq.maps.Size(0, 0)); marker.set("iconAnchor", new qq.maps.Point(16, 16)); marker.set("shadow", new qq.maps.MarkerImage(null, null, null, null, new qq.maps.Size(0, 0))); markerContainer.appendChild(marker.get("container")); }); return {}; }, }; ``` 4. 最后在 CSS 设置地图容器的样式: ```css .map-container { position: relative; } .map { position: relative; z-index: 1; } .marker { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 2; } ``` 这样就完成了使用腾讯地图拖动标记获取经纬度的操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值