作者简介
亦枫,携程资深软件工程师,负责酒店业务 Android 客户端的相关研发工作。
当前大多数移动互联网 App 都会存在地图相关功能,尤其是 LBS(基于位置服务)相关的业务,依赖性更强,携程 App 的酒店业务更是如此。这篇文章将围绕携程酒店 App 安卓地图功能,分别从产品业务背景、代码开发模块架构和遇到的典型产品技术问题等方面,描述我们这一路的开发实践经验,希望能够帮助到正在从事相关业务开发的同行们,大家相互交流,共同探讨。
一、携程酒店地图业务介绍
可视化的地图交互界面能够给到用户最直观的地理位置信息感受,根据用户主观心理选择的价格高低、距离远近、交通方式、生活购物等多个因素,帮助用户迅速找到目的地区域最适合自己的酒店。无论是直观体验上,还是用户习惯上,地图功能都是携程酒店整体业务不可或缺的一部分。
携程酒店业务涉及地图开发的地方目前主要有三个模块,酒店列表页小地图、酒店列表大地图和酒店详情页地图。
1)列表页小地图
提供与主列表数据联动的地图打点功能,方便用户浏览酒店列表时能够实时查看当前选中酒店的地图位置信息。
地图 Marker 覆盖物与列表数据一致,同时根据当前列表分页,展示当前页与上一页的酒店数据,并突出选中当前酒店。
2)列表页大地图
包括顶部标题栏筛选项等辅助信息,中间地图背景信息和底部选中酒店卡片信息三部分,用户可通过筛选项、拖动地图自动加载当前地图屏幕内酒店等功能,实现通过地图订酒店的功能。
之所以称之为列表页大地图,是因为当前页面与酒店列表页(包括小地图)自由切换,并记住当前用户行为,保存酒店数据信息。
3)详情页的地图
酒店详情地图主要提供导航路线、酒店周边相关 POI 内容,帮助用户了解所在酒店的具体地图信息。
相比而言,酒店详情页的地图业务相对比较简单,这里的简单更多是针对开发层面,因为该页面的数据较为独立,不存在与其他页面有太多联动相关的业务。
二、酒店地图相关架构设计
大家知道,提供地图工具的第三方服务不止一家,常见如国内有百度、高德、腾讯地图,国外有谷歌、苹果地图服务。
为了保证