Google maps 谷歌静态地图与方向

Google maps 谷歌静态地图与方向,google-maps,google-maps-api-3,google-static-maps,Google Maps,Google Maps Api 3,Google Static Maps,我在我的项目列表中有生成的带有迷你地图的地方。地图上应该有2个点,这两个点之间的彩色道路方向 看起来应该是这样的: 这应该是静态图像,因为页面上会有许多不同方向的图片。但正如我看到的,谷歌静态地图不允许绘制这样的图像。两点之间只能有直线,如下所示: 但我需要它的方向 我决定使用静态映射,因为在我的web应用程序中,我接收这两个点的坐标,如果我使用静态映射,很容易将其作为变量放入PHP模板中。 但是否有可能以同样的方式接收方向作为静态图像 我找到了一些使用JavaScript API的解决方案

我在我的项目列表中有生成的带有迷你地图的地方。地图上应该有2个点,这两个点之间的彩色道路方向

看起来应该是这样的:

这应该是静态图像,因为页面上会有许多不同方向的图片。但正如我看到的,谷歌静态地图不允许绘制这样的图像。两点之间只能有直线,如下所示:

但我需要它的方向

我决定使用静态映射,因为在我的web应用程序中,我接收这两个点的坐标,如果我使用静态映射,很容易将其作为变量放入PHP模板中。 但是否有可能以同样的方式接收方向作为静态图像


我找到了一些使用JavaScript API的解决方案,但没有找到如何根据需要绘制静态图像…

您可以通过两个步骤完成

  • 执行来自PHP代码的方向请求以获取编码的多段线
  • 将步骤1中的编码多段线与静态贴图一起使用
  • 例如

    这将返回管线[0]->概述\u多段线->点中的编码多段线

    现在在静态贴图中使用多段线:

    https://maps.googleapis.com/maps/api/staticmap?size=600x400&path=enc%3AohqfIc_jpCkE%7DCx%40mJdDa%5BbD%7BM%7D%40e%40_MgKiQuVOoFlF%7DVnCnBn%40aDlDkN%7DDwEt%40%7DM%7DB_TjBy%7C%40lEgr%40lMa%60BhSi%7C%40%7COmuAxb%40k%7BGh%5E_%7BFjRor%40%7CaAq%7DC~iAomDle%40i%7BA~d%40ktBbp%40%7DqCvoA%7DjHpm%40uuDzH%7Dm%40sAg%7DB%60Bgy%40%7CHkv%40tTsxAtCgl%40aBo例如,下面的一个单词,表示表示表示,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如%7B%60Ac%7DAwp%40soAyk%40ogAml%40%7Bg%40qKsNeJw%5DeuA%7D%60Fkm%40czBm英语常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用词汇词汇词汇词汇词汇词汇词汇词汇,常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用常用词词词词词词词词词词词词表,常用词汇词汇词汇,常用常用常用常用常用常用常用常用常用常用词汇词汇词汇词汇词汇,常用词词词词词词词词词词表,常用常用常用常用常用常用常用常用常用常用常用词汇词汇词汇词汇词汇,常用常用常用常用常用常用常用常用常用词汇词汇,常用词词词词词词词词词词词词词词词词40awIoA_aApDe~%40dKytAfw%40kyFtCib%40%7DA%7Bj%40kd%40usBcRgx%(10)中文常用常用词汇(10)表示表示表示(10)单词单词(10)单词(10)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)单词(7)的7)单词(7)的7)单词(7)单词(7)单词(7)在10%10%的10%的7)表示表示10%10%的10%的10%的10%的10%的10%的10%的10%的10%的10%的10%的单词(10%的10%的10%的10%的10%的单词(10%的10%的10%的学习学习TGGXA%7CJ%7BkGeJ\U aDsQi\U HmFwuAmI%7BdA\U XijByFgv%40%7DAiwBxDocAdM%7BlAtSmcAf4.词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词词40yf%40_j%40y%40oi%40mVi%5EmFqSwAiPtDuQbc%40_nAtZyaAlEkc%40r%40eq%40%7CAo%5BrTwcAtVuz%40vQ%7Dd%40%7CPmb%40xT%7B%5CzZyd%40jG%7BRzL%7Dh%40jr%40ov%40rFiImFqPiD%7BJ&key=您的API密钥


    我为我的网站创建了一个小实用程序功能,它完全满足您的需要:

    给定一个起点、一个目的地和一组航路点(如果需要的话),它将为您提供一个干净的Google静态地图URL,并在这些点之间呈现驱动路径,并设置适当的标记

    index.php

    <?php
    
    include "static-map-direction.php";
    
    $origin = "45.291002,-0.868131";
    $destination = "44.683159,-0.405704";
    $waypoints = array(
        "44.8765065,-0.4444849",
        "44.8843778,-0.1368667"
      );
    
    $map_url = getStaticGmapURLForDirection($origin, $destination, $waypoints);
    
    echo '<img src="'.$map_url.'"/>';
    
    <?php
    
    function getStaticGmapURLForDirection($origin, $destination, $waypoints, $size = "500x500") {
        $markers = array();
        $waypoints_labels = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K");
        $waypoints_label_iter = 0;
    
        $markers[] = "markers=color:green" . urlencode("|") . "label:" . urlencode($waypoints_labels[$waypoints_label_iter++] . '|' . $origin);
        foreach ($waypoints as $waypoint) {
            $markers[] = "markers=color:blue" . urlencode("|") . "label:" . urlencode($waypoints_labels[$waypoints_label_iter++] . '|' . $waypoint);
        }
        $markers[] = "markers=color:red" . urlencode("|") . "label:" . urlencode($waypoints_labels[$waypoints_label_iter] . '|' . $destination);
    
        $url = "https://maps.googleapis.com/maps/api/directions/json?origin=$origin&destination=$destination&waypoints=" . implode($waypoints, '|');
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, false);
        $result = curl_exec($ch);
        curl_close($ch);
        $googleDirection = json_decode($result, true);
    
        $polyline = urlencode($googleDirection['routes'][0]['overview_polyline']['points']);
        $markers = implode($markers, '&');
    
        return "https://maps.googleapis.com/maps/api/staticmap?size=$size&maptype=roadmap&path=enc:$polyline&$markers";
    }
    

    我用PHP编写了Bedu33逻辑,并用javascript编写它来生成Google地图静态图像,以防有人像我一样需要它。此代码使用来自

    var request=directionsDisplay.directions.request;
    var start=request.origin.lat();
    var end=request.destination.lat();
    var path=directionsDisplay.directions.routes[0]。概述\u多段线;
    var标记=[];
    var航路点标签=[“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”、“J”、“K”];
    var航路点标签=0;
    markers.push(“markers=color:green | label:+航路点| labels[航路点(标签)]+'|'+开始);
    
    对于(var i=0;i我今天一直在这样做,使用从距离矩阵返回的overview_多段线,但是在某些情况下,在将多段线添加到地图URL时,该多段线不会绘制在静态地图上,而是在动态地图上工作。随着谷歌新定价的到来,我们不得不进行更改,因为我们当前的年度付款是向我支付的增加1500%。
    静态地图的好处是,您可以传递邮政编码/zip和完整地址。您还可以传递使事情更简单的变量。

    您需要使用获取该路径的所有坐标,然后将所有这些坐标传递给
    路径
    参数中的静态地图API。请参阅相关问题:@geocodezip I'm sur关于我的案例的正确代码。这些问题与什么语言有关?这里的示例URL也可以看到,您需要在路径之前添加“enc%3A”。http://../staticmap?...&path=enc%3A(不带括号的路径)另请参阅以了解API密钥限制的潜在混乱:此答案对我帮助很大。此工具也可以帮助您构建多段线:。习惯它需要一些时间。您还可以使用它解码现有多段线。这有助于调试目的。谢谢。这正是我所寻找的。当我尝试使用两个不同的l位置,我看到一张地图,地图上没有线。我的标记是a和C,这让人困惑,因为我不知道谁有B,但我只放在两个位置。可能是因为我使用的地址不是longditude和Lat吗?不,等等,它仍然没有画线。它只显示了两个标记任何Javascript版本?
    var request = directionsDisplay.directions.request;
    var start = request.origin.lat() + ',' + request.origin.lng();
    var end = request.destination.lat() + ',' + request.destination.lng();
    var path = directionsDisplay.directions.routes[0].overview_polyline;
    var markers = [];           
    var waypoints_labels = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"];
    var waypoints_label_iter = 0;   
    markers.push("markers=color:green|label:" + waypoints_labels[waypoints_label_iter] + '|' + start);
    
    for(var i=0;i<request.waypoints.length;i++){
        //I have waypoints that are not stopovers I dont want to display them
        if(request.waypoints[i].stopover==true){
            markers.push("markers=color:blue|label:" + waypoints_labels[++waypoints_label_iter] + '|' + request.waypoints[i].location.lat() + "," +request.waypoints[i].location.lng());
        }           
    }
    
    markers.push("markers=color:red|label:" + waypoints_labels[++waypoints_label_iter] + '|' + end);
    
    markers = markers.join('&');
    
    alert("https://maps.googleapis.com/maps/api/staticmap?size=1000x1000&maptype=roadmap&path=enc:" + path + "&" + markers);