前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android 腾讯地图 选点定位,仿微信发送位置

Android 腾讯地图 选点定位,仿微信发送位置

作者头像
yechaoa
发布于 2022-06-10 05:40:18
发布于 2022-06-10 05:40:18
1.5K00
代码可运行
举报
文章被收录于专栏:移动开发专栏移动开发专栏
运行总次数:0
代码可运行
效果图:

不需要集成定位、地图,然后标记 回调等繁琐的操作,你只需要一个webview,使用腾讯地图的地图选点组件即可。

申请key

接入指引

使用地图选点组件

调用方式一:

通过iframe内嵌调用,地图选点组件的页面会根据开发者设置的iframe宽高自适应。

调用方式二:

通过页面跳转的方式调用该组件的时候,开发者需要设置backurl参数,用户点击选中的位置点后,页面跳转至开发者指定的返回地址(backurl),并将位置信息添加到回跳地址(backurl)上。

例如:https://apis.map.qq.com/tools/locpicker?search=1&type=0&backurl=http://3gimg.qq.com/lightmap/components/locationPicker2/back.html&key=yourkey&referer=myapp

方式一明显是html的使用方式,方式二是通过页面跳转的方式调用,我们就可以用webview来加载。

这里要注意backurl,是我们自定义的回调地址,位置信息会添加到回跳地址(backurl)上,所以,拦截了回调地址就能知道位置信息了。

参数说明:

1,WebView
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">

    <WebView
        android:id="@+id/web_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>
2,初始化WebView并拦截跳转请求
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        String mUrl = "https://apis.map.qq.com/tools/locpicker?search=1&type=0&backurl=http://callback&key=QULBZ-6M6KO-5YZWR-SEYTJ-GNNS5-O6B3L&referer=myapp";

        WebSettings settings = mWebView.getSettings();
        settings.setRenderPriority(WebSettings.RenderPriority.HIGH);
        settings.setSupportMultipleWindows(true);
        settings.setJavaScriptEnabled(true);
        settings.setSavePassword(false);
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        settings.setMinimumFontSize(settings.getMinimumFontSize() + 8);
        settings.setAllowFileAccess(false);
        settings.setTextSize(WebSettings.TextSize.NORMAL);
        mWebView.setVerticalScrollbarOverlay(true);
        mWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (!url.startsWith("http://callback")) {
                    view.loadUrl(url);
                } else {
                    try {
                        LogUtil.i(url);

                        //转utf-8编码
                        String decode = URLDecoder.decode(url, "UTF-8");
                        LogUtil.i(decode);

                        //转uri,然后根据key取值
                        Uri uri = Uri.parse(decode);
                        String latng = uri.getQueryParameter("latng");//纬度在前,经度在后,以逗号分隔
                        String[] split = latng.split(",");
                        String lat = split[0];//纬度
                        String lng = split[1];//经度
                        String address = uri.getQueryParameter("addr");//地址

                        LogUtil.i(uri.getQueryParameter("addr"));

                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }
                }
                return true;
            }
        });
        mWebView.loadUrl(mUrl);
  • 回调地址http://callback
  • 然后在shouldOverrideUrlLoading中处理逻辑

初始url是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://callback/?name=%E9%99%86%E5%AE%B6%E5%98%B4&latng=31.23776,121.50218&addr=%E4%B8%8A%E6%B5%B7%E5%B8%82%E6%B5%A6%E4%B8%9C%E6%96%B0%E5%8C%BA%E9%99%86%E5%AE%B6%E5%98%B4&city=%E4%B8%8A%E6%B5%B7%E5%B8%82&module=locationPicker

明显是编码不对啊,然后转成utf-8:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String decode = URLDecoder.decode(url, "UTF-8");
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://callback/?name=陆家嘴&latng=31.23776,121.50218&addr=上海市浦东新区陆家嘴&city=上海市&module=locationPicker

然后把url转成uri,直接根据key取值即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 Uri uri = Uri.parse(decode);
 String latng = uri.getQueryParameter("latng");//经纬度
 String name = uri.getQueryParameter("name");//标题
 String address = uri.getQueryParameter("addr");//地址

最后:如果不能获取位置附近的地址列表,在key控制台中,把WebServiceApi选项 选中即可。

感谢:https://www.jianshu.com/p/e466d6fce3e3

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android WebView选择图片、发送图片
主要代码来自:http://blog.csdn.net/woshinia/article/details/19030437 有删改
yechaoa
2022/06/10
9930
腾讯位置服务地图选点组件使用示例
在js或者数据库中保存这些信息,静态图片和地图API的调起就要用到这些信息,主要还是经纬度。
腾讯位置服务
2021/01/15
2.1K0
WebView深度学习(一)之WebView的基本使用以及Android和js的交互
//设置WebView缓存(当加载 html 页面时,WebView会在/data/data/包名目录下生成 database 与 cache 两个文件夹,请求的 URL记录保存在 WebViewCache.db,而 URL的内容是保存在 WebViewCache 文件夹下)
AWeiLoveAndroid
2018/09/03
6.7K0
WebView深度学习(一)之WebView的基本使用以及Android和js的交互
vue使用腾讯位置服务选点组件问题总结
采用的是地图 API 的第二种方式,跳转新的页面,通过回调路径把地址信息带回来原先页面
腾讯位置服务
2020/08/21
1.2K0
android软件开发之webView.addJavascriptInterface循环渐进【一】
首先必要的啰嗦几句,这几天写VC写的累的要死,突然间不想再写想VC了,手里面有一个andriod的手机天天玩到半夜,却从来没有写过这方面的程序,真的是悲哀啊。所以我就想写这方面的程序,用管了VC的习程序的习惯,第一个程序当然是hello world。刚开始还没有什么大的问题,当到后面想写一刷Q*会员的程序的时候却发现,android的界面布局是真的难啊,怎么摆都不好看。弄得和....什么似的。气得头都大了,想想自己写了这么长时间的VC还真的没有碰到这样的界面问题,真可谓.. 在verycd上看人家大牛的视频
xiangzhihong
2018/01/26
1.4K0
Android原生同步登录状态到H5网页避免二次登录
本文解决的问题是目前流行的 Android/IOS 原生应用内嵌 WebView 网页时,原生与H5页面登录状态的同步。
solocoder
2022/04/06
1.6K0
WebView的使用及实战
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details/53084703
程序员徐公
2018/09/18
9840
WebView的使用及实战
WebView完全解读
WebView是一个使用WebKit引擎(4.4之后基于Chromium)的浏览器控件。因此可以将WebView当做一个完整的浏览器使用。
小小工匠
2021/08/16
3.6K0
Android浏览器调用APP「建议收藏」
有时我们想通过点击浏览器中某些广告链接来启动或下载APP,以启动APP来说,我们知道APP可以定义一个scheme,如果我们在浏览器中定义一个URL,这个URL使用定义的scheme,这样点击后我们就可以打开我们的客户端了,但目前市面上有些浏览器支持性不好,或者直接就不支持,认为这个打开是一个有害的链,那么我们还有没有其它的办法来结合,下面我们以web服务做为功能基础来实现
全栈程序员站长
2022/08/28
9120
Android:你要的WebView与 JS 交互方式 都在这里了
对于Android调用JS代码的方法有2种: 1. 通过WebView的loadUrl() 2. 通过WebView的evaluateJavascript()
Carson.Ho
2019/02/22
7.3K0
据说这里可以帮你解决许多关于WebView的问题
使用WebView开发的坑很多,这是众所周知的。本文分别对WebView的三个基本控件(俗称三剑客WebViewClient,WebChromeClient,WebView)做了一些封装,方便使用,避免掉坑里。
阳仔
2019/07/31
7680
WebView深度学习(二)之全面总结WebView遇到的坑及优化
这篇文章讲一下WebView遇到的那些坑,带领各位爬坑。这里如果有你没遇到的问题,欢迎留言告诉我,我尽我所能帮你解决。感谢大家支持。
AWeiLoveAndroid
2018/09/03
6.2K0
WebView深度学习(二)之全面总结WebView遇到的坑及优化
scrapy0700:深度爬虫scrapy深度爬虫
爬虫程序,主要是用与数据采集处理的一种网络程序,在操作过程中针对指定的url地址进行数据请求并根据需要采集数据,但是在实际项目开发过程中,经常会遇到目标url地址数量不明确的情况,如之前的章节中提到的智联招聘项目,不同的岗位搜索到的岗位数量不一定一致,也就意味着每个工作搜索到的工作岗位列表页面的数量不一定一致,爬虫工程师工作可能搜索到了10页,Django工作有可能都索到了25页数据,那么针对这样的数据要全部进行爬取,应该怎么处理呢?答案就是:深度爬虫
大牧莫邪
2018/08/27
1.9K0
11.webview、shareSDK
布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <RelativeLayout android:layout_width="match_parent"
六月的雨
2018/05/14
9890
Android WebView全面总结
WebView是安卓中用来显示html文本内容的的控件,对html5也有很好的支持,ios的控件UIWebView差不多。网上对WebView的解释很多,但都是零星的介绍,导致到现在为止webview给我的印象都是,貌似很强大,其实很鸡肋,于是决定总结一下webview的开发经验。 使用WebView并不需要开通网络权限 网上有文章说webview需要开通internet权限,否则会出Web page not available错误,这是不对的,出现Web page not available并不是因为使用
晚晴幽草轩轩主
2018/03/27
2.6K0
python根据ip获取地理位置再查询天气情况调百度语音合成朗读
虽然是造轮子,不过还是挺好玩的。主要的困难点再于编码问题。还有一个是部分使用python2.7的代码和python3.4之间的兼容性问题。代码发布在github中。https://github.com/luyishisi/The_python_code/tree/master/automatic_weather
十四君
2019/11/27
1K0
相关推荐
Android WebView选择图片、发送图片
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验