腾讯位置服务教你轻松搞定微信发送位置功能
时间: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尝试一下。
- 使用Fiddler的X5S插件查找XSS漏洞
- 【翻译】在Mac上使用VSCode创建你的第一个Asp.Net Core应用
- Android6.0运行时权限的处理及解决办法
- 操作系统指纹识别概述
- Android 内存泄露简介、典型情景及检测解决
- [原创]Fluent NHibernate之旅
- 复杂而艰辛的重构之路--起步
- 【强烈推荐】数据库迁移利器:Migrator.Net
- 关于某道C#上机题的OO
- Android 事件处理探险
- Fluent NHibernate RC 1.0 --升级内容
- 驳“反驳老赵之“伪”递归”
- 关于今天很热的--FizzBuzzWhizz
- 了解EF CodeFirst的Migrator功能与Migrator.Net对比
- 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 数组属性和方法
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- 你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
- java阻塞队列得实现
- 谈谈如何利用 valgrind 排查内存错误
- 用java写一个死锁
- Runnable和Thread比较
- 使用@ConditionalOnProperty注解
- Java注解Annotation与自定义注解详解
- spring boot 配置多个DispatcherServlet
- 基于Pytorch实现的MASR中文语音识别
- Quartz.NET 配置文件详解
- 如何用redis正确实现分布式锁?
- SQL Server 事务隔离级别
- Django+Vue开发生鲜电商平台之8.商品详情页功能实现
- Django+Vue开发生鲜电商平台之7.用户登录和注册功能