php - 使用谷歌地图、PHP 和 MySQL 从 A 点到 B 点的距离

标签 php google-maps-api-3 distance

谁能帮忙。我只需要一个简单的脚本。我有一个表格发布到另一个页面。两个表单域是:

从地址和到地址

我唯一需要的是一个脚本,它可以显示以公里为单位的距离以及使用谷歌地图所需的时间。我找到了几十个脚本,但我无法让它工作。 map 已经有了这个代码,似乎工作完美。

<script type="text/javascript" src="//maps.googleapis.com/maps/api/js?key=AIzaSyDdDwV6_l5n2bS3gM6NBCla3RFLtIFc_HE&sensor=false"></script><script type="text/javascript">
    var directionDisplay;
    var directionsService = new google.maps.DirectionsService();
    var map;

    function initialize() {
        directionsDisplay = new google.maps.DirectionsRenderer();
        var myOptions = {
            zoom: 8,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
        }
        map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
        directionsDisplay.setMap(map);

        var start = "<? echo $_POST[fromaddress]; ?>";
        var end = "<? echo $_POST[toaddress]; ?>";
        var request = {
            origin:start, 
            destination:end,
            travelMode: google.maps.DirectionsTravelMode.DRIVING
        };
        directionsService.route(request, function(response, status) {
            if (status == google.maps.DirectionsStatus.OK) {
                directionsDisplay.setDirections(response);
            }
        });

    }

    $(document).ready(function(){
        initialize();
    });        
</script>

但是我如何显示距离和时间。最好的选择是在 php 值中获取它,例如:

$distance = some-code;
$time = some-code-too;

非常感谢您的帮助。

最佳答案

您需要为此使用不同的 API。首先,不要使用 JS,而是使用 PHP,这是适合您的代码片段;)

$from = "Więckowskiego 72, Łódź";
$to = "Gazowa 1, Łódź";

$from = urlencode($from);
$to = urlencode($to);

$data = file_get_contents("http://maps.googleapis.com/maps/api/distancematrix/json?origins=$from&destinations=$to&language=en-EN&sensor=false");
$data = json_decode($data);

$time = 0;
$distance = 0;

foreach($data->rows[0]->elements as $road) {
    $time += $road->duration->value;
    $distance += $road->distance->value;
}

echo "To: ".$data->destination_addresses[0];
echo "<br/>";
echo "From: ".$data->origin_addresses[0];
echo "<br/>";
echo "Time: ".$time." seconds";
echo "<br/>";
echo "Distance: ".$distance." meters";

输出:

To: Gazowa 1, 91-076 Łódź, Poland
From: Więckowskiego 72, Łódź, Poland
Time: 206 seconds
Distance: 1488 meters

关于php - 使用谷歌地图、PHP 和 MySQL 从 A 点到 B 点的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14041227/

相关文章:

php - Laravel 5.7 Eloquent 关系列表

php - 在 Laravel 中列出超过 2 列

php - php 中的 mysql_query 错误 - 无法将信息插入数据库

php - 由连字符和下划线连接的单词的正则表达式,同时保留标点符号

javascript - 谷歌地图 API 发生变化?

javascript - 使用谷歌地图 api 3 的 MapTypeId.TERRAIN 的单独按钮

ios - 物体从滑轮系统掉落的距离(类似于愤怒的小鸟游戏)在 IOS 中使用 Cocos2D 和 Box2D

android - 从 Google Places 结果中获取经度和纬度

r - 使用 shapefile 在 R 中创建连通性直方图

python - 在 python 中使用 scipy.spatial.distance.cdist(X, Y) 查找一组点之间的距离