【问题标题】:Google Maps geocoding Multiple Lines谷歌地图地理编码多行
【发布时间】:2012-05-07 20:18:59
【问题描述】:

我正在尝试使用 Google Maps JavaScript API 从多个位置对绘制多条测地线折线。我在这里找到了 98% 的内容(http://stackoverflow.com/questions/2994424/google-maps-geocoding-address-to-glatlng),但我不知道如何添加额外的点和其他线路(例如还显示美国芝加哥和美国洛杉矶之间的线路)。感谢任何人都可以提供的任何帮助。

【问题讨论】:

    标签: javascript google-maps geocoding polyline


    【解决方案1】:

    新的更新,这次将目的地点编码放入一个单独的函数中,并独立进行每个地理编码调用。应该比尝试嵌套回调过程更具可扩展性。

    <!DOCTYPE html>
    <html> 
    <head> 
      <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
      <title>Google Maps API Geocoding Demo</title> 
      <script src="http://maps.google.com/maps/api/js?sensor=false" 
              type="text/javascript"></script>
    </head> 
    <body>
      <div id="map" style="width: 1280px; height: 1024px;"></div>
    
      <script type="text/javascript">
    //add locations
        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 2,
          center: new google.maps.LatLng(35.00, -25.00),
          mapTypeId: google.maps.MapTypeId.TERRAIN
        });
    
        var address1 = '60033';
    
        var gc = new google.maps.Geocoder();
        gc.geocode({'address': address1}, function (res1, status) {
    
            var hub = res1[0].geometry.location;
            new google.maps.Marker({
                position: res1[0].geometry.location,
                map: map
              });
    
            geocodeLine(hub, '44145');  
            geocodeLine(hub, '03103');
            geocodeLine(hub, '30236');
            geocodeLine(hub, '18106');
            geocodeLine(hub, '64147');
            geocodeLine(hub, '86401');
            geocodeLine(hub, '75110');
            geocodeLine(hub, '56001');
            geocodeLine(hub, '80239');
            geocodeLine(hub, '95776');
        });   
    
        function geocodeLine(hub, address)
        {
            var gc = new google.maps.Geocoder();
    
            gc.geocode({'address': address}, function (res, status) { 
                if (status == google.maps.GeocoderStatus.OK) {
    
                  new google.maps.Marker({
                    position: res[0].geometry.location,
                    map: map
                  }); 
    
                  new google.maps.Polyline({
                    path: [
                      hub,
                      res[0].geometry.location
                    ],
                    strokeColor: '#FF0000',
                    geodesic: true,
                    map: map
                    });
                }
            });
        }
      </script>
    </body>
    </html>
    

    【讨论】:

    • 非常感谢您的回复。您发送的示例的唯一问题是它线性地处理所有地址。有没有办法让它们每个都是独一无二的?例如,一条线路从伦敦到纽约,另一条线路从芝加哥到洛杉矶。代码生成伦敦到纽约到芝加哥到洛杉矶。如果我不想从纽约到芝加哥怎么办?再次感谢 TON!
    • 在这种情况下,您需要创建多条折线,因为一条折线代表一条连续的线,要拥有两条线,您需要创建两条折线。我已经举了一个例子来说明我在上面的答案中的意思。
    • 你就是那个男人!再次感谢所有帮助。另一个快速的问题。我已经根据自己的需要对此进行了编码,但是当我添加太多点时,我似乎遇到了一些障碍。如果您查看maptest.freehosting.com/chi.html,我制作了我正在尝试制作的地图,除了我需要再添加一点。但是当我尝试添加第 12 点时,它不起作用。知道是什么原因造成的吗?它是谷歌的东西,脚本的东西还是用户错误(我)?谢谢。
    • 查看我更新的解决方案(再次):) 现在我了解您想要做得更好,这个解决方案应该更具可扩展性。
    • 你是最棒的!这正是我所需要的。非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多