Android实现地图照片墙原理
来源:互联网 发布:淘宝小号注册机 编辑:程序博客网 时间:2024/05/31 18:32
一、绪
前两天在群里和基友聊LOFTER,一直感兴于照片App的我突然想到了一款国外的App,用于记录去过的地方:
如果两者结合,就可以将拍照和地图放在一起,多么美妙哇~ 当我提到这个想法时,基友一脸不屑说,iphone早已经自带了这种效果:
当时真是被泼冷水啊~不过,虽然已经有了这样的产品,那么我们可以了解下其中的实现原理,也不枉老夫的一片爱慕之心。
在iphone中,这种效果称为 【时刻】。可以理解,某张照片,记录某个时刻,某个时间,某个位置。假设某天boss也需要这样的需求,我们该如何思考来实现呢?
二、核心原理
整体需求我们可以分为两部分:
(1)拍摄照片
(2)地图显示
将照片显示到地图上,其实就是将图片作为Marker。本篇博客着重说第一步的实现方式,关于将照片显示到地图上的操作,可以看我之前写的一篇博客:
详解Android中玩转高德地图
在将照片显示到地图之前,当前拍照所在位置就已经确定下来。根据位置定位地图显示范围,并将照片显示到确定位置。OK,功能逻辑实现已经很清楚,我们先来看第一部的实现:
1. 拍摄照片,获取当前位置
实现也有两种方式:
(1)根据网络定位当前位置。
需要集成定位功能,例如高德,百度等等。当拍摄好照片后,显示到地图当前位置。
(2)设置相机位置功能
打开相机设置,打开储存位置信息即可,拍摄完毕后,解析照片头信息,获取当前位置。如下:
第一种方式相对来说比较简单,需要依赖第三方定位功能。今天我们来看第二种方式如何实现。
第二种实现方式核心原理就是从照片的头信息中获取经纬度,解析经纬度,然后根据经纬度定位当前位置。如何从照片中获取经纬度信息呢?
首先,照片中头信息经纬度为有效值,有两个前提条件:
(1)GPS必须开启
(2)必须有网络
因为照片头信息中的经纬度是根据GPS来决定,所以GPS功能必须为开启状态,且网络必须为有网状态,否则经纬度将为null。
三、具体实现
在原理中我们分析了具体的核心原理,接下来来看具体的实现:
(1)开启相机
(3)解析图片头信息
(4)转换经纬度信息
分析:
(1)打开相机,拍照后获取照片路径。
(2)使用ExifInterface根据图片路径读取图片,解析图片相关信息。
(3)获取经纬度信息,解析经纬度。
(4)得到具体经纬度数值。
通过以上操作,我们就完成了对照片头信息的解析采集,获取经纬度值,显示到地图相应位置即可。
以上就是全部内容了,核心还是ExifInterace的使用。不过这种方式不太稳定。使用第三方定位来实现,稳定性相对来说较好。代码很简单,就不再提供源码了,有问题的朋友可以给我留言啦~
- Android实现地图照片墙原理
- 照片墙的实现原理
- android照片墙的实现
- Android照片墙的实现
- Android实现照片墙背景
- Android 照片墙功能实现
- Android瀑布流照片墙实现
- Android瀑布流照片墙实现
- Android照片墙应用实现预防OOM
- Android照片墙实现 -- 功能介绍
- Android照片墙应用实现Demo
- Android照片墙应用实现(AsyncTask应用)
- Android照片墙纸实现
- Android开源代码解读の地图照片应用Panoramio的实现详解(一)
- Android开源代码解读の地图照片应用Panoramio的实现详解(二)
- Android开源代码解读の地图照片应用Panoramio的实现详解(三)
- Android开源代码解读の地图照片应用Panoramio的实现详解(四)
- Android开源代码解读の地图照片应用Panoramio的实现详解(五)
- 【脚本语言系列】关于Python测试工具mock, 你需要知道的事
- 关于485串口通信
- 解决Execution failed for task ':app:clean'. > Unable to delete directory问题
- vue2 router 动态传参,多个参数
- IMWeb训练营 todo list作业
- Android实现地图照片墙原理
- 2017.4.19 数列 思考记录
- python程序的加密和打包
- C++常用排序总结
- Spark源码分析之分区器的作用
- js data日期初始化
- Android Studio "佛祖保佑 永无bug" 注释模板设置详解(仅供娱乐)
- html5基本语法(一)
- 动态规划练习18:买书