uniapp App端高德地图选址

首先,uni.chooseLocation,这是个什么玩意,不是原生的方法,原生地图覆盖了这个地图,正式打包之后也不能用,于是乎,我想到了webview嵌入h5

因为高德地图和腾讯地图引入iframe打包后不能获取具体位置,设置backurl参数(腾讯地图)也不太好用,打包之后返回不了,但是重点来了,聪明的我发现他们都有一个共同特点,都可以指定附近位置选择,腾讯的是coord参数,高德的是center,我的思路既然不能精确定位,那就先提前获取位置,然后把经纬度传到iframe的src里,这样就弥补了这个缺点,废话不多说上干货。。。

h5目录

image

页面A是要获取位置的页面,然后我们就在这个页面先获取经纬度,然后传到h5页面

image

A页面data

image

methods里先获取经纬度然后在onLoad执行下,然后把获取的经纬度传到B页面(注意:高德地图获取经纬度首先要在去高德地图申请安卓的appkey,然后在mainfest.json勾选相应配置,具体这里不多说了)

            //高德地图获取经纬度
            getLocation() {
                let _this = this;
                uni.getLocation({
                    type: 'gcj02',
                    geocode: true,
                    success: function(res) {
                        console.log('当前位置的经度:' + res.longitude);
                        console.log('当前位置的纬度:' + res.latitude);
                        let aa = res.longitude + "," + res.latitude;
                        _this.url += encodeURIComponent(aa)
                    },
                    fail: function(res) {
                        uni.showToast({
                            title: '获取地址失败,请检查设备是否允许定位 ',
                            icon: 'none'
                        });
                        _this.loadModal = false;
                    },
            
                });
            
            },


B页面来了,

<template>
    <view>
        <!-- #ifdef H5 -->
        <view class="">
            待开发,暂无地图选择!!!
        </view>
        <!-- #endif -->
        <!-- #ifdef APP-PLUS -->
        <web-view :src="url" @message="onMessage"></web-view>
        <!-- #endif -->
    </view>
</template>

<script>
    export default {
        data() {
            return {
                url: '',
            }
        },
        onLoad(options) {
            this.url = options.url;
        },

        methods: {
            onMessage(res) {
                console.log('app接收网页消息:', res.detail.data[0])
                // alert("")
                this.getPositon(res.detail.data[0], this)
            },
            getPositon(res, self) {
                uni.$emit('onAddressChange', res);
                uni.navigateBack({
                    delta: 1
                });
            },

        }

    }
</script>

<style>

</style>

C页面(h5页面)来了,

<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />

        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <meta name="apple-mobile-web-app-status-bar-style" content="black" />
        <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
        <title>选取位置</title>
        <style>
            body{
            position: absolute;
            top: 0;
            bottom: 0;
            left: 0;
            right: 0;
            margin: 0;
        }
        iframe{
            width: 100%;
            height: 100%;
        }
       
    </style>
    </head>
    <body>

        <iframe id="test" src=""></iframe>
        <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.1.js"></script>
        <script>
            //获取 uni-app 传来的值
            let aa = getQuery('data')
            let yy = "https://m.amap.com/picker/?center=" + aa + "&key=f191a00ffa4c8f78467e8769490dc5a1"
            $("#test").attr("src", yy);

            //取url中的经纬度
            function getQuery(name) {
                // 正则:[找寻'&' + 'url参数名字' = '值' + '&']('&'可以不存在)
                let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
                let r = window.location.search.substr(1).match(reg);
                console.log(r);
                if (r != null) {
                    // 对参数值进行解码
                    return decodeURIComponent(r[2]);
                }
                return null;
            }

            (function() {
                var iframe = document.getElementById('test').contentWindow;
                document.getElementById('test').onload = function() {
                    iframe.postMessage('hello', 'https://m.amap.com/picker/');
                };
                window.addEventListener("message", function(e) {
                    // alert('您选择了:' + e.data.name + ',' + e.data.location)
                    var loc = e.data;
                    // 选址后自动传参到B页面
                    uni.postMessage({
                        data: loc
                    })
                }, false);
            }())
        </script>

    </body>
</html>

A页面接收B页面返回的经纬度城市信息,

        onLoad(options) {
            // 进入A页面主动获取经纬度,然后传到h5 ifrem里
            this.getLocation();
            // 页面通讯
            let _this = this;
            uni.$on("onAddressChange", function(info) {
                console.log("购物车 <- 收到:", info)
                // alert("购物车 <- 收到" + info)
                _this.selectArea = info.name;
                _this.longitude = info.location.substring(0, 10);
                _this.latitude = info.location.substring(11, 20);
                console.log("_this.longitude:", info.longitude)
                console.log("_this.latitude:", _this.latitude)
                _this.getAreaInfo();
            });

        },

over!over!over!
你觉得有用就点个赞再走吧!!!

©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容