地址的功能如何做成自动定位到城市地区功能?

地址的功能如何做成自动定位到城市地区功能?

https://img1.sycdn.imooc.com//climg/618d2994099ed5c006240390.jpg

用vue3的语法如何实现?只需要定位到省份市区就行

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
农夫山泉有点烫 2021-11-13 09:20:19

如果是小程序的话,估计要申请腾讯或高德的key了,小程序拿不到中文地址

好帮手慕星星 2021-11-12 18:22:04

同学你好,启动项目后会有两个地址,使用第二个地址在浏览器打开

https://img1.sycdn.imooc.com//climg/618e3d6709bde41903800074.jpg

因为官网的介绍是如果浏览器H5定位失败,会调用IP定位

https://img1.sycdn.imooc.com//climg/618e3d77099485bc10030227.jpg

另外建议将浏览器位置打开,在设置--隐私中,例如win10系统设置

https://img1.sycdn.imooc.com//climg/618e3de209e3957106220594.jpg

在访问地址的时候可能会有弹框提示,点击‘确定’即可(可能显示不太准)

https://img1.sycdn.imooc.com//climg/618e3e020938d60f04570169.jpg

代码:

<template>
    <div id="app">
        <p>{{address}}</p>
        <div id='container'></div>
    </div>
</template>
<script>
import BMap from 'BMap';
export default {
    name: 'App',
    data() {
        return {
            address: '',
        }
    },
    mounted() {
        this.createMap()
    },

    methods: {
        createMap() {
            var that = this;
            var map = new BMap.Map("container");
            var point = new BMap.Point(116.331398, 39.897445);;
            map.centerAndZoom(point, 12);
            var geoc = new BMap.Geocoder();
            var geolocation = new BMap.Geolocation();
            geolocation.getCurrentPosition(function(r) {
                if (this.getStatus() == BMAP_STATUS_SUCCESS) {
                    var mk = new BMap.Marker(r.point);
                    map.addOverlay(mk);
                    map.panTo(r.point);
                    console.log('您的位置:' + r.point.lng + ',' + r.point.lat);

                    var pt = r.point;
                    geoc.getLocation(pt, function(rs) {
                        var addComp = rs.addressComponents;
                        that.address = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber
                    });


                } else {
                    console.log('failed' + this.getStatus());
                }
            }, {
                enableHighAccuracy: true
            })
        },
    }
}
</script>
<style scoped>

#container {
    width: 100%;
    height: 80vh;
}
</style>

2、另外ip定位,老师这里显示‘北京市’,并不是全国

https://img1.sycdn.imooc.com//climg/618e3fff09c9664f01990025.jpg

部分代码如下:

 methods: {
        createMap() {
            var map = new BMap.Map("container");
            var point = new BMap.Point(116.331398, 39.897445);
            map.centerAndZoom(point, 12);

            function myFun(result) {
                var cityName = result.name;
                map.setCenter(cityName);
                console.log("当前定位城市:" + cityName);
            }
            var myCity = new BMap.LocalCity();
            myCity.get(myFun);
        },
    }

3、SDK定位是手机端的,可暂时不考虑。

自己再测试下。

好帮手慕星星 2021-11-12 10:33:02

同学你好,项目中需要使用百度地图或者高德地图来定位,可以参考官方文档中的定位:

https://lbs.baidu.com/index.php?title=jspopularGL/guide/geoloaction

https://lbs.amap.com/api/jsapi-v2/guide/services/geolocation

网上也有参考例子:

https://www.jianshu.com/p/32d19e0c0da2

https://blog.csdn.net/sun_0516/article/details/108007471

写代码前提注册百度地图或者高德地图来获取key,然后再使用。

自己感兴趣的话,可以试试。祝学习愉快~

  • 提问者 leepulse #1

    使用了上面的第2个参考例子,报错,不知道怎么搞

    https://img1.sycdn.imooc.com//climg/618dd6be0938802907971283.jpg

    2021-11-12 10:51:51
  • 提问者 leepulse #2

    上面的代码报错我都改过来了,但最后还是BMap会报错,vue.config.js里已经添加了配置项,

    https://img1.sycdn.imooc.com//climg/618dddcc0913357213200658.jpg

    2021-11-12 11:21:49
  • 提问者 leepulse #3

    我又调试过了,但使用浏览器定位和定位SDK辅助定位都发送请求失败,使用IP定位就可以发送请求成功,但返回的定位位置是全国,不是我当前的省份,

    2021-11-12 11:51:11
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师