php基于百度地图封装的对象类实现计算地图上两点间的距离和地理编码

简介: php基于百度地图封装的对象类实现计算地图上两点间的距离和地理编码

封装对象

class GeoHelper
{
    /*
     * @param int $lat1
     * @param int $lon1
     * @param int $lat2
     * @param int $lon2
     * @param string $unit
     * @return
     */
    public function distance($lon1, $lat1, $lon2, $lat2, $unit = "K")
    {
        $theta = $lon1 - $lon2;
        $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad
            ($lat2)) * cos(deg2rad($theta));
        $dist = acos($dist);
        $dist = rad2deg($dist);
        $miles = $dist * 60 * 1.1515;
        $unit = strtoupper($unit);
        if ($unit == "K") {
            return ($miles * 1.609344);
        } else
            if ($unit == "N") {
                return ($miles * 0.8684);
            } else { //mi
                return $miles;
            }
    }
    /**
     *地理编码
     * @param string $address
     * @param string $apikey
     * @return array [1]:lat [0]:lng
     */
    public function getLatLng($address, $apikey)
    {
        $find = array("\\n", "\\r", " ");
        $replace = array("", "", "+");
        $address = str_replace($find, $replace, $address);
        $url = 'http://api.map.baidu.com/geocoding/v3/?address=' . $address . '&ak=' . $apikey . '&output=json';
        $res = json_decode(file_get_contents($url), true);
        //var_dump($res);
        $coordinates = [$res["result"]["location"]["lng"], $res["result"]["location"]["lat"]];
        if (!empty($coordinates)) {
            return $coordinates;
        } else {
            return "";
        }
    }
}

调用对象

$obj = new GeoHelper();
$str = "宁波市鄞州区泰康中路558号";
$ak = "F552bedbee2ec8fa6bae7b7a0**";
$b = $obj->getLatLng($str, $ak);
var_dump($b);
$c = $obj->distance(121.554586, 29.813444, 121.554649, 29.81231, "K");
echo number_format($c, 2) . "千米";


Done !

相关文章
|
1月前
|
缓存 安全 PHP
PHP中的魔术方法与对象序列化
本文将深入探讨PHP中的魔术方法,特别是与对象序列化和反序列化相关的__sleep()和__wakeup()方法。通过实例解析,帮助读者理解如何在实际应用中有效利用这些魔术方法,提高开发效率和代码质量。
|
9天前
|
XML 搜索推荐 定位技术
向百度提交网站地图Sitemap
我知道可以通过Google 网站管理员工具向 Google 提交网站地图 Sitemap,那么我如何向百度、雅虎等其他搜索引擎提交呢?我是否需要制作一个类似 Google Sitemap 一样的 baidu Sitemap 呢?
11 1
|
1月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP开发领域,设计模式是解决常见问题的高效方案集合。它们不是具体的代码,而是一种编码和设计经验的总结。单例模式作为设计模式中的一种,确保了一个类仅有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的基本概念、实现方式及其在PHP中的应用。
单例模式在PHP中的应用广泛,尤其在处理数据库连接、日志记录等场景时,能显著提高资源利用率和执行效率。本文从单例模式的定义出发,详细解释了其在PHP中的不同实现方法,并探讨了使用单例模式的优势与注意事项。通过对示例代码的分析,读者将能够理解如何在PHP项目中有效应用单例模式。
|
2月前
|
SQL 关系型数据库 数据库连接
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
本文介绍了PHP中PDO(PHP Data Objects)扩展的基本概念和使用方法。内容包括PDO类和PDOStatement类的介绍,PDO的简单使用,预定义占位符的使用方法,以及PDOStatement对象的使用。文章还讨论了绑定预定义占位符参数的不同形式,即bindValue和bindParam的区别。通过具体示例,展示了如何使用PDO进行数据库连接、数据查询、数据插入等操作。
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
|
2月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
44 2
|
2月前
|
PHP
PHP中如何比较两个对象
PHP中如何比较两个对象
|
2月前
|
PHP
PHP中的面向对象编程:理解类与对象
本文将深入探讨PHP中面向对象编程的核心概念——类与对象。通过实例讲解,帮助读者更好地理解如何在PHP中运用OOP编写更高效、可维护的代码。
44 9
|
3月前
|
PHP 开发者
PHP中的面向对象编程:掌握类与对象的精髓
探索PHP的面向对象编程世界,本文将带你了解如何通过创建和操作类来实例化对象。我们将深入讲解类的声明、构造函数的使用以及继承和多态性的概念。准备好,让我们一起在代码的海洋中航行,揭开PHP对象编程的神秘面纱!
|
3月前
|
JavaScript 前端开发 定位技术
百度地图JavaScript API v2.0创建地图
百度地图JavaScript API v2.0创建地图
63 0
|
4月前
|
Serverless PHP
【PHP常用函数封装】 php 判断两个数组所有的值是否是完全相等
【PHP常用函数封装】 php 判断两个数组所有的值是否是完全相等
40 3
下一篇
无影云桌面