腾讯位置服务教你轻松搞定微信发送位置功能
时间:2022-07-22
本文章向大家介绍腾讯位置服务教你轻松搞定微信发送位置功能,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
以下内容转载自面糊的文章《模仿微信发送位置功能》
作者:面糊
链接:https://www.jianshu.com/p/47b3ada2e36d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
前言
微信的发送位置功能是一个十分方便的功能,他会定位用户当前所在地点,然后请求用户周边的POI,并且还可以通过拖动地图来获取其他的位置发送给对方,本Demo是结合腾讯地图SDK来实现类似的功能。
使用场景
拖动地图选择地图的中心点,然后请求该点周边的门店信息,可以通过设置搜索分类来指定搜索门店的类型,如:美食、学校等。
准备
核心代码:
1、设置大头针,固定在地图中央,并监听地图移动的时候大头针跟随移动:
- (void)mapViewRegionChange:(QMapView *)mapView {
// 更新位置
_annotation.coordinate = mapView.centerCoordinate;
}
2、配置周边检索功能,将检索类型设置为"美食":
- (void)searchCurrentLocationWithKeyword:(NSString *)keyword {
CLLocationCoordinate2D centerCoord = self.mapView.centerCoordinate;
QMSPoiSearchOption *option = [[QMSPoiSearchOption alloc] init];
if (keyword.length > 0) {
option.keyword = keyword;
}
option.boundary = [NSString stringWithFormat:@"nearby(%f,%f,2000,1)", centerCoord.latitude, centerCoord.longitude];
[option setFilter:@"category=美食"];
[self.mapSearcher searchWithPoiSearchOption:option];
}
3、解析检索结果,移动地图视野,并将结果显示在tableView上:
- (void)searchWithPoiSearchOption:(QMSPoiSearchOption *)poiSearchOption didReceiveResult:(QMSPoiSearchResult *)poiSearchResult {
NSLog(@"%@", poiSearchResult);
if (poiSearchResult.count == 0) {
return;
}
// 地图移动到搜索结果的第一个位置
if (_searchBar.text.length > 0) {
_selectedIndex = 0;
QMSPoiData *firstData = poiSearchResult.dataArray[0];
_annotation.coordinate = firstData.location;
[self.mapView setCenterCoordinate:firstData.location animated:YES];
} else {
_selectedIndex = -1;
}
_searchResultArray = poiSearchResult.dataArray;
[_searchResultTableView reloadData];
}
以上就是核心代码,在Demo中还添加了用于显示地址的TableView以及搜索位置的SearchBar,有兴趣的同学可以在文章最下方进入码云下载完整示例。
示例:搜索西二旗地铁附近的美食
链接
感兴趣的同学可以在码云中下载Demo尝试一下。
- Java面试系列23-spring(2)-配置数据库驱动、依赖、Mapping等
- 【Golang语言社区】 Go语言中使用 Protobuf
- Java面试系列21-xml
- tensorflow载入数据的三种方式 之 TF生成数据的方法
- JS游戏开发 可移动地图的实现
- Java面试系列-多线程
- pymongo.errors:Sort operation used more than the maximum 33554432 bytes of RAM. Add an index,
- PG学习初体验--源码安装和简单命令(r8笔记第97天)
- Pymongo: TypeError: if no direction is specified, key_or_list must be an instance of list
- Java面试系列19-Struts2
- JS游戏开发,让你的静态人物动起来(来自网路)
- Golang语言websocket源码
- 社团划分——Fast Unfolding算法
- 【PSU】AIX 11g RAC自动打GI PSU5
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Geant4官网虚拟机的完全使用入门
- VCS入门教程(四)
- VCS入门教程(三)
- VCS入门教程(二)
- VCS入门教程(一)
- WebRTC架构图说明
- java安全编码指南之:Mutability可变性
- RocketMQ 消息丢失场景分析及如何解决!
- Gopro Ardunio控制库.3
- GoPro Arduino控制库.阅读源码.1
- [漏洞复现] 二.Windows远程桌面服务漏洞(CVE-2019-0708)复现及详解
- 本地scratch-gui和blockly安装
- 用Python打造一款文件搜索工具,所有功能自己定义!
- 解决SSH登录缓慢
- Html ul、li Css标签详解 使用图片自定义样式 隐藏小点样式齐全