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;
}
}
?
>
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>';
?
>
样例返回:
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 前言 ...
- C#的百度地图开发(三)依据坐标获取位置、商圈及周边信息
原文:C#的百度地图开发(三)依据坐标获取位置.商圈及周边信息 我们得到了百度坐标,现在依据这一坐标来获取相应的信息.下面是相应的代码 public class BaiduMap { /// < ...
- 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 ...
随机推荐
- MySQL复制表结构和内容到另一张表(转)
MySQL不要看它小,一个开源的产物,要学习它的东西真的很多.而它的一切是SQL Server无法比拟的. 复制表结构及数据到新表 create table 新表 select * from 旧表 只 ...
- An Introduction to Reflection in C++
Apr 13, 2017 Stop me if you’ve heard this one before. You are working on a messaging middleware, a g ...
- Linux ClientDataSet libmidas.so.2
Linux ClientDataSet libmidas.so.2 DELPHI LINUX程序使用CLIENTDATASET控件,部署的时候需要libmidas.so,相当于WINDOWS程序的MI ...
- pair类型
pair是一个模板数据类型,其中包含两个数据值,两个数据值可以不同 如 pair<int,string>a(2,"fgh");则a是一个pair类型,它包括两个数据,第 ...
- Web编程前端之7:web.config详解 【转】
http://www.cnblogs.com/alvinyue/archive/2013/05/06/3063008.html 声明:这篇文章是摘抄周公(周金桥)的<asp.net夜话> ...
- 同步I/O 和 异步I/O
所谓同步I/O是指在调用ReadFile.WriteFile等函数进行输入输出操作时,系统完毕了输入输出ReedFile.WriteFile才返回. 在操作系统进行I/O操作的过程上,用户态线程不能运 ...
- 脚本命令加载外部配置文件夹conf
加载log4j配置文件 Log4iConfigurer类 public class Log4iConfigurer { private static boolean INITIALIZED = fal ...
- 百科知识 国内的创业项目如何众筹,能登录Kickstarter吗
一个国内的团队登陆Kickstarter到底有多难? 300万用户,4.8亿美元筹款,Kickstarter在2013年交出了一份惊艳的答卷.对于美英澳加新荷六国的创业团队来说,Kickstarter ...
- 面向对象在JavaScript中的接口实现
接口是面向对象编程的基础.它是一组包括了函数型方法的数据结构,与类一样.都是编程语言中比較抽象的概念.比方生活中的接口.机顶盒.人们利用它来实现收看不同频道和信号的节目,它宛如对不同类型的信息进行集合 ...
- shell查看系统基本信息脚本
#!/bin/bash echo "IP:" ifconfig |grep "inet addr"|grep -v 127.0.0.1|awk '{print ...