php根据地理坐标获取国家、省份、城市,及周边数据类
功能:当App获取到用户的地理坐标时,可以根据坐标知道用户当前在那个国家、省份、城市,及周边有什么数据。
原理:基于百度Geocoding API 实现,需要先注册百度开发者,然后申请百度AK(密钥)
Geocoding.class.PHP
<?php
/**
* 根据地理坐标获取国家、省份、城市,及周边数据类(利用百度Geocoding API实现)
* 百度密钥获取方法:http://lbsyun.baidu.com/apiconsole/key?application=key(需要先注册百度开发者账号)
* Date: 2015-07-30
* Author: fdipzone
* Ver: 1.0
*
* Func:
* Public getAddressComponent 根据地址获取国家、省份、城市及周边数据
* Private toCurl 使用curl调用百度Geocoding API
*/
class Geocoding {
// 百度Geocoding API
const API = 'http://api.map.baidu.com/geocoder/v2/';
// 不显示周边数据
const NO_POIS = 0;
// 显示周边数据
const POIS = 1;
/**
* 根据地址获取国家、省份、城市及周边数据
* @param String $ak 百度ak(密钥)
* @param Decimal $longitude 经度
* @param Decimal $latitude 纬度
* @param Int $pois 是否显示周边数据
* @return Array
*/
public static function getAddressComponent($ak, $longitude, $latitude, $pois=self::NO_POIS){
$param = array(
'ak' => $ak,
'location' => implode(',', array($latitude, $longitude)),
'pois' => $pois,
'output' => 'json'
);
// 请求百度api
$response = self::toCurl(self::API, $param);
$result = array();
if($response){
$result = json_decode($response, true);
}
return $result;
}
/**
* 使用curl调用百度Geocoding API
* @param String $url 请求的地址
* @param Array $param 请求的参数
* @return JSON
*/
private static function toCurl($url, $param=array()){
$ch = curl_init();
if(substr($url,0,5)=='https'){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param));
$response = curl_exec($ch);
if($error=curl_error($ch)){
return false;
}
curl_close($ch);
return $response;
}
}
?>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
demo.php
<?php
require "Geocoding.class.php";
$ak = '这里填写你的百度AK';
$longitude = 113.327782;
$latitude = 23.137202;
$result = Geocoding::getAddressComponent($ak, $longitude, $latitude, Geocoding::NO_POIS);
echo '<pre>';
print_r($result);
echo '</pre>';
?>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
例子返回:
Array
(
[status] => 0
[result] => Array
(
[location] => Array
(
[lng] => 113.32778195925
[lat] => 23.137201991056
)
[formatted_address] => 广东省广州市天河区体育西横街35号
[business] => 天河城,体育中心,沙河
[addressComponent] => Array
(
[city] => 广州市
[country] => 中国
[direction] => 附近
[distance] => 14
[district] => 天河区
[province] => 广东省
[street] => 体育西横街
[street_number] => 35号
[country_code] => 0
)
[poiRegions] => Array
(
)
[sematic_description] => 红盾大厦北58米
[cityCode] => 257
)
)
php根据地理坐标获取国家、省份、城市,及周边数据类的更多相关文章
- php依据地理坐标获取国家、省份、城市,及周边数据类
功能:当App获取到用户的地理坐标时,能够依据坐标知道用户当前在那个国家.省份.城市.及周边有什么数据. 原理:基于百度Geocoding API 实现.须要先注冊百度开发人员.然后申请百度AK(密钥 ...
- Laravel根据Ip获取国家,城市信息
https://blog.csdn.net/zhezhebie/article/details/79097133 1.安装: composer require geoip2/geoip2:~2.0 2 ...
- 根据现有IP地址获取其地理位置(省份,城市等)的方法
根据现有IP地址获取其地理位置(省份,城市等)的方法 function GetIpLookup($ip = ''){ if(empty($ip)){ return '请输入IP地址'; } $res ...
- 企业运维实践-Nginx使用geoip2模块并利用MaxMind的GeoIP2数据库实现处理不同国家或城市的访问最佳实践指南
关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 0x00 前言 ...
- php根据IP获取IP所在城市
转载出处:php实现根据IP地址获取其所在省市的方法 //根据现有IP地址获取其地理位置(省份,城市等)的方法 function GetIpLookup($ip = ''){ if(empty($ip ...
- mpvue微信小程序多列选择器用法:实现省份城市选择
前言 微信小程序默认给我们提供了一个省市区的picker选择器,只需将mode设置为region即可 <picker mode="region" bindchange=&qu ...
- ABP开发框架前后端开发系列---(6)ABP基础接口处理和省份城市行政区管理模块的开发
最近没有更新ABP框架的相关文章,一直在研究和封装相关的接口,总算告一段落,开始继续整理下开发心得.上次我在随笔<ABP开发框架前后端开发系列---(5)Web API调用类在Winform项目 ...
- 省份-城市-区域三级联动【struts2 + ajax +非数据库版】
package loaderman; /** * 实体,封装省份和城市 */ public class Bean { private String province;//省份 private Stri ...
- Ajax案例-基于XML,以POST方式,完成省份-城市二级下拉联动
<%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC & ...
随机推荐
- CPP_异常处理
错误处理:C分散的就近处理:C++集中处理. C++错误处理机制:函数实现中若出现错误想处理,用throw抛出异常.应用程序中,用try...catch...捕获异常处理. 异常按类型捕获:int, ...
- 协变(covariant)和逆变(contravariant)
我们知道子类转换到父类,在C#中是能够隐式转换的.这种子类到父类的转换就是协变. 而另外一种类似于父类转向子类的变换,可以简单的理解为“逆变”. 上面对逆变的简单理解有些牵强,因为协变和逆变只能针对接 ...
- iptables配置文件/etc/sysconfig/iptables内容详解
#头两行是注释说明# Firewall configuration written by system-config-securitylevel# Manual customization of th ...
- hive2.3.2安装使用
hive的安装简单一些,使用也比较简单,基础hadoop搭建好之后,只要初始化一些目录和数据库就好了 安装需要做几件事: 1.设立一个数据源作为元数据存储的地方,默认是derby内嵌数据库,不过不允许 ...
- PCL点云特征描述与提取(3)
快速点特征直方图(FPFH)描述子 已知点云P中有n个点,那么它的点特征直方图(PFH)的理论计算复杂度是,其中k是点云P中每个点p计算特征向量时考虑的邻域数量.对于实时应用或接近实时应用中,密集点云 ...
- MATLAB——textscan
%读取带变量名的数据集的程序,寇文红2007年5月24日于畅春园. %这是一个读取数据集的程序,目的是把如下带变量名的数据矩阵读进MATLAB.% <DTYYYYMMDD>,<TIM ...
- Qt学习 之 QWebView
WebKit 是一个开源的浏览器引擎,目前 Safari,Chrome 等浏览器均使用了 WebKit 作为核心.Qt 从 4.5 版本开始,集成了 WebKit 作为 Qt 的平台组件,用户可以像使 ...
- Axiom3D:Ogre中Mesh文件格式分析(一)
在Axiom3D,或者说是Ogre的mesh的文件格式我们可能通过代码反推出相关格式,相关过程本来我是直接写的,后面发现相关流程写完后,我自己都看晕了,然后我就把一些过程用Execl整理出来,发现过程 ...
- (笔记)Linux下的准确延时,#include <linux/delay.h>调用出错
在编写应用层程序时,有时需要延时一下,这个时候该怎么办呢? 在内核代码中,我们经常会看到这样的头文件使用#include <linux/delay.h>,心想着直接调用这个就可以了吧!可是 ...
- JVM运行时数据区与JVM堆内存模型小结
前提 JVM运行时数据区和JVM内存模型是两回事,JVM内存模型指的是JVM堆内存模型. 那JVM运行时数据区又是什么? 它包括:程序计数器.虚拟机栈.本地方法栈.方法区.堆. 来看看它们都是干嘛的 ...