根据地址获取经纬度

根据地址/经纬度调用百度地图

百度地图api  进入控制台 申请账号 –> 认证个人开发者(无需审核) –>创建应用(名称随意,类型默认服务端)

开发文档–>服务接口–>web服务api–>正/逆地理编码–>地理编码(又名Geocoder)

地理编码服务

用户可通过该功能,将结构化地址(省/市/区/街道/门牌号)解析为对应的位置坐标。地址结构越完整,地址内容越准确,解析的坐标精度越高。

http://api.map.baidu.com/geocoding/v3/?address=北京市海淀区上地十街10号&output=json&ak=您的ak&callback=showLocation //GET请求

创建extend/MapApi/MapApi.php
http_build_query() 函数说明
比如有一个数组 $data=[‘name’=>’百度地图’,’method’=>’get’]
使用该函数返回结果   name=百度地图&method=get
这是模拟http请求的,把得到的数据data通过函数URL-encode,一般是用在回调。



返回结果
{"status":0,"result":{"location":{"lng":115.8355632464674,"lat":28.72450164684869},"precise":1,"confidence":80,"comprehension":100,"level":"门址"}}

调用静态图

开发文档–>服务接口–>web服务api–>静态图 http://api.map.baidu.com/staticimage/v2

前端代码引用
<img style="margin:20px" width="280" height="140" src="地址"/>
//随便在一个控制器写一个测试方法
public function test()
    {
        $res = MaoApi::staticimage('******');
        return $res;
    }


<?php

namespace MapApi;

class MapApi
{
    //通过类名调用静态方法,并不需要实例化对象,而构造方法,只有在实例化对象时才调用
//    private $ak;
//    private $baiduApi;
//    private $geocoding;
//    private $staticimage;
//
//    public function __construct()
//    {
//        $this->ak = Config('map.ak');
//        $this->baiduApi = Config('map.baiduApi');
//        $this->geocoding = Config('map.geocoding');
//        $this->staticimage = Config('map.staticimage');
//    }

    /tp://api.map.baidu.com/geocoding/v3/?address=北京市海淀区上地十街10号&output=json&ak=您的ak&callback=showLocation //GET请求
    //根据地址获取经纬度
    public static function getLangLat($address)
    {
        if (!$address) {
            return false;
        }
        $data = [
            'address' => $address,
            'ak' => Config('map.ak'),
            'output' => Config('map.output'),
        ];
        $url = Config('map.baiduApi') . Config('map.geocoding') . '?' . http_build_query($data);
        $res = file_get_contents($url);
        return $res;
    }

    /tp://api.map.baidu.com/staticimage/v2?ak=E4805d16520de693a3fe707cdc962045&mcode=666666&center=116.403874,39.914888&width=300&height=200&zoom=11
    //静态图
    public static function staticimage($center)
    {
        if (!$center) {
            return false;
        }
        $data = [
            'ak' => Config('map.ak'),
            'width' => Config('map.width'),
            'height' => Config('map.height'),
            'center' => $center,
            'markers' => $center,
        ];
        $url = Config('map.baiduApi') . Config('map.staticimage') . '?' . http_build_query($data);
        $res = file_get_contents($url);
        return $res;
    }
}
赞赏

微信赞赏支付宝赞赏

发表评论