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

Distance from point A to B using Google Maps, PHP and MySQL(使用谷歌地图、PHP 和 MySQL 从 A 点到 B 点的距离)
本文介绍了使用谷歌地图、PHP 和 MySQL 从 A 点到 B 点的距离的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

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

Can anyone please help. I just need a simple script. I have a form posted to another page. two formfields are:

fromaddress 和 toaddress

fromaddress and toaddress

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

The only thing I need is a script that shows me the distance in km and the time it takes using google maps. I have found dozens of scripts but I cannot get it working. The map is already there with this code which seems to work perfect.

<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 值中,例如:

But how do i display the distance and the time. Best option is to get it in a php value like:

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

非常感谢您的帮助.

推荐答案

您需要为此使用不同的 API.首先,不要使用 JS 而是使用 PHP,这是应该对你有用的代码片段;)

You need to use different API for that. First of all, don't use JS but PHP, here's the code snippet that should work for you ;)

$from = "Wickowskiego 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: Wickowskiego 72, ód, Poland
Time: 206 seconds
Distance: 1488 meters

这篇关于使用谷歌地图、PHP 和 MySQL 从 A 点到 B 点的距离的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Warning: mysqli_query() expects at least 2 parameters, 1 given. What?(警告:mysqli_query() 需要至少 2 个参数,1 个给定.什么?)
INSERT query produces quot;Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean givenquot;(INSERT 查询产生“警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,给出布尔值;)
prepared statements - are they necessary(准备好的陈述 - 它们是否必要)
Do I need to escape my variables if I use MySQLi prepared statements?(如果我使用 MySQLi 准备好的语句,是否需要转义我的变量?)
Properly Escaping with MySQLI | query over prepared statements(使用 MySQLI 正确转义 |查询准备好的语句)
Is it possible to use mysqli_fetch_object with a prepared statement(是否可以将 mysqli_fetch_object 与准备好的语句一起使用)