php用百度地图API进行逆地址解析
- <?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;
- }
- }
- ?>
使用
- <?php
- header("Content-type: text/html; charset=utf-8");
- header('Access-Control-Allow-Origin:*');
- require "Geocoding.class.php";//引入配置类
- $ak = '2q6OVS3LlFuZcoXGtXvqxAYq';//百度申请的秘钥,这里是错误的秘钥
- class Location
- {
- public $province;
- public $city;
- public $district;
- public $street;
- public $address;
- private static $_instance;
- public static function getInstance()
- {
- if(! (self::$_instance instanceof self) )
- {
- self::$_instance = new self();
- }
- return self::$_instance;
- }
- private function __construct(){}
- private function __clone(){}
- }
- function test_input($data)
- {
- $data = trim($data);
- $data = stripslashes($data);
- $data = htmlspecialchars($data);
- return $data;
- }
- //默认以GET方式传送
- $longitude = test_input($_GET["long"]);
- $latitude = test_input($_GET["lat"]);
- //$longitude=113.327782;
- //$latitude=23.137202;
- $result = Geocoding::getAddressComponent($ak, $longitude, $latitude, Geocoding::NO_POIS);
- $locat=Location::getInstance() ;
- $address=$result["result"]["addressComponent"];
- if($address["province"]!=$address["city"])
- {
- $location=$address["province"].$address["city"].$address["district"].$address["street"];
- }
- else
- {
- $location=$address["city"].$address["district"].$address["street"];
- }
- $locat->province=$address["province"];
- $locat->city=$address["city"];
- $locat->district=$address["district"];
- $locat->street=$address["street"];
- $locat->address=$location;
- $json = json_encode($locat);
- echo "$json";//返回类似地址字符串也可根据自己需要返回地址
- ?>
获取秘钥地址http://developer.baidu.com/map/
参考链接http://my.oschina.net/xialeistudio/blog/366347
php用百度地图API进行逆地址解析的更多相关文章
- 【百度地图API】批量地址解析与批量反地址解析(带商圈数据)
原文:[百度地图API]批量地址解析与批量反地址解析(带商圈数据) 摘要:因为地址解析的webserives方式还没有开通,所以先用JS版本的地址解析接口来批量获取地址解析数据吧,同时还能得到商圈的数 ...
- 【百度地图API】当地址解析失败时,如何调用search方法查找地址
原文:[百度地图API]当地址解析失败时,如何调用search方法查找地址 有个朋友问我,当地址解析失败时,应该如何处理呢?比如,他想搜索“南宁市青秀区”. --------------------- ...
- 百度地图API和高德地图API资料集锦
[高德地图API]从零开始学高德JS API(五)路线规划——驾车|公交|步行 [高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自 ...
- 【百度地图API】如何区分地址解析和智能搜索?
原文:[百度地图API]如何区分地址解析和智能搜索? 摘要: 很多用户一直无法区分地址解析geocoder和智能搜索localsearch的使用场景.该文章用一个详尽的示例,充分展示了这两个类,共5种 ...
- 【百度地图API】如何进行地址解析与反地址解析?——模糊地址能搜索到精确地理信息!
原文:[百度地图API]如何进行地址解析与反地址解析?--模糊地址能搜索到精确地理信息! 摘要: 什么是地址解析? 什么是反地址解析? 如何运用地址解析,和反地址解析? 可以同时运用地址解析,和反地址 ...
- 百度地图API提供Geocoder类进行地址解析
根据地址描述获得坐标百度地图API提供Geocoder类进行地址解析,您可以通过Geocoder.getPoint()方法来将一段地址描述转换为一个坐标. // 创建地址解析器实例var myGeo ...
- 百度地图api实例
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm11.aspx ...
- 微信小程序城市定位(借助百度地图API判断城市)
概述 微信小程序提供一些API(地址)用于获取当前用户的地理位置等信息,但无论是wx.getLocation,还是wx.chooseLocation均没有单独的字段表示国家与城市信息,仅有经纬度信息. ...
- 微信小程序城市定位(百度地图API)
概述 微信小程序提供一些API(地址)用于获取当前用户的地理位置等信息,但无论是wx.getLocation,还是wx.chooseLocation均没有单独的字段表示国家与城市信息,仅有经纬度信息. ...
随机推荐
- Oracle数据库定义语言(DDL)
--使用Create遇见创建表 Create Table table_name ( column_name datatype [null|not null], column_name datatype ...
- Sqoop- sqoop将mysql数据表导入到hive报错
sqoop将mysql数据表导入到hive报错 [root@ip---- lib]# sqoop import --connect jdbc:mysql://54.223.175.12:3308/gx ...
- 用eclipse写xml文件
1. 2.把写好的xml文件粘贴到src文件夹中.
- vs2015配置boost c++
参考:https://blog.csdn.net/zengraoli/article/details/70187556 https://blog.csdn.net/misterfm/article/d ...
- Skype SILK vs. iLBC vs. Speex
对比一下这三种VOIP语音算法的特点: 1 参数与特征 2 SILK性能 关于iLBC和Speex的性能可以参考以前写的文章. 3 关于VOIP一些观点(仅代表个人观点) 1) Skype 辛苦三年 ...
- java.util Properties使用记录
转:http://www.2cto.com/px/201006/47834.html 在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properti ...
- C++STL库中map容器常用应用
#include<iostream> #include<cstdio> #include<map> //按键值大小构成二叉搜索树 using namespace s ...
- UE3代码阅读需知
转自:http://www.cnblogs.com/hmxp8/archive/2012/02/21/2361211.html 掌握一款庞大的引擎,要一下子掌握真的很难,慢慢地从Editor,Scri ...
- httpd或Nginx负载均衡tomcat
实验环境:CentOS7 #两台tomcat的基本配置如下: [root@webapps localhost]#setenforce 0 [root@webapps localhost]#iptabl ...
- oracle--循环PL/SQL--demo1---
--简单的条件判断if–then --编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该员工工资增加10%. create or replace procedure sp_pro6 ...