php用百度地图API进行IP定位和GPS定位
<?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进行IP定位和GPS定位的更多相关文章
- 百度地图API的IP定位城市和浏览器定位(转)
百度地图API提供了Geolocation 和 LocalCity两个服务类. 这俩API可以分别供用户在JavaScript中进行定位和城市确认. 1 本质上,Geolocation这个类是使用了支 ...
- 百度地图api使用,简单搜索+经纬度定位+自定义消息窗口
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- vue引入百度地图api组件封装(根据地址定位)
Map.vue <template> <div class="Map" :style="{ height: this.height+'px', widt ...
- [工具向]__申请,下载,使用百度地图api
前言 api即应用程序接口,在我们的日常开发中,我们不仅可以在开源代码仓库(,github,码云)中获得很大的帮助,在日常开发中占重要地位的另一个东西就是api,我们可以使用众多的第三方编写的优秀的a ...
- 百度地图API,定位您的当前位置
1.介绍 利用百度地图的API来定位您的所属位置,这个位置返回的是经纬度,而不是具体的汉字位置.利用经纬度,再显示在百度地图上的位置. 2.代码 <html> <head> & ...
- 百度地图API示例之添加定位相关控件
代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" cont ...
- Android 百度地图API 定位 导航
看看这个利用百度地图定位并实现目的地导航的Demo. 首先看实现效果: 进 入后首先会得到当前位置,在地图上显示出来.在输入框中输入目的地后,就会在地 ...
- HTML5地理定位,百度地图API,知识点熟悉
推断浏览器的兼容问题: IE9+支持地理定位,FF Chrome新版支持地理定位 if (navigator.geolocation) { alert('支持地理定位'); } e ...
- 如何利用【百度地图API】进行定位?非GPS定位
原文:如何利用[百度地图API]进行定位?非GPS定位 如果你可以上网,如果你有火狐浏览器,那么恭喜你.你能很容易使用以下代码进行定位! ------------------------------- ...
随机推荐
- windows开机启动nginx
1 .http://www.cuplayer.com/player/PlayerCode/Nginx/2014/0919/1577.html 2. http://www.cnblogs.com/xus ...
- for应用
应用:迭代法,穷举法.一.迭代法:有一定规律. 每次循环都是从上次运算结果中获得数据,本次运算的结果都是要为下次运算做准备.例:1.100以内所有数的和.2.求阶乘3.求年龄.4.折纸.5.棋盘放粮食 ...
- 解决linux ping: unknown host www.baidu.com(转)
解决方案: 如果某台Linux服务器ping不通域名, 如下提示: [root@localhost ~]# ping www.baidu.comping: unknown host www.ba ...
- some knowledge
注意 关于cornerstone无法上传library文件的问题 上面是我要添加的library文件,网上提供的方法是 在CornerStone的菜单栏里面 View->ShowIgnoreI ...
- stat 函数讲解
表头文件: #include <sys/stat.h> #include <unistd.h>定义函数: int stat( ...
- C++ Primer 读书笔记: 第9章 顺序容器
第9章 顺序容器 引: 顺序容器: vector 支持快速随机访问 list 支持快速插入/删除 deque 双端队列 顺序容器适配器: stack 后进先出栈 queue 先进先出队列 priori ...
- mysql 5.6.20的安装、配置服务、设置编码格式
一.安装 安装环境 系统:Window 32 版本:Mysql 5.6.20 1. 首先从官网上http://dev.mysql.com/downloads/mysql/ ...
- mysql获取各种日期
select curdate(); --获取当前日期 select last_day(curdate()); --获取当月最后一天. select DATE_ADD(curdate(),interva ...
- Android DatePicker和TimePicker
监测日期改变的监听器: OnDateChangedListener和OnTimeChangedListener() 当用户改变Datepicker里的年.月.日时,将触发 ...
- php中date函数获取当前时间的时区误差解决办法
例:echo date('Y-m-d H:i:s', time()); 输出时间:2008-10-12 02:32:17 但实际时间是:2008-10-12 10:32:17时间误差8个小时 PHP手 ...