【问题标题】:Focus a Google Map based on a town name根据城镇名称聚焦谷歌地图
【发布时间】:2009-04-21 12:54:08
【问题描述】:

我有一个城镇名称、gmap 模块和 plg。我想通过输入城镇名称而不是经度和纬度来在 gmap 中聚焦所需位置。有没有办法在 Joomla 1.5.x 中做到这一点。

提前致谢
天真

【问题讨论】:

    标签: google-maps joomla


    【解决方案1】:

    您将需要一个地理编码器来根据城市名称获取位置。对 Joomla 一无所知,但这里是使用 JavaScript 的示例。

    HTML

    <div id='myMap' style="position:relative; width:740px; height:400px;"></div>
    

    脚本

    您必须填写 Google API Key 和您想要的城市

    <script src="http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=XXXXX">
    </script>
    
    <script type="text/javascript">
        function addLoadEvent(func) {
            var oldonload = window.onload;
            if (typeof window.onload != 'function')
            { window.onload = func; }
            else {
                window.onload = function()
                { oldonload(); func(); }
            }
        }
    
        var map = null;
        var geocoder = null;
    
        addLoadEvent(initialize);
    
        function initialize() {
            if (GBrowserIsCompatible()) {
                map = new GMap2(document.getElementById("myMap"));
                map.setCenter(new GLatLng(-12.08, -53.08), 4);
                map.addControl(new GSmallMapControl());
                map.addControl(new GOverviewMapControl());
                geocoder = new GClientGeocoder();
                showAddress('YourCity, YourCountry');
            }
        }
    
        function showAddress(address) {
            if (geocoder) {
                geocoder.getLatLng(
              address,
              function(point) {
                  if (!point) {
                      $("#myMap").hide();
                  } else {
                      map.setCenter(point, 8);
                      var marker = new GMarker(point);
                      map.addOverlay(marker);
                      marker.openInfoWindowHtml(address);
                  }
              }
            );
            }
        }
    </script>
    

    【讨论】:

    • 您不需要 addLoadEvent 自定义功能。为了简化代码,使用: GEvent.addDomListener( window, 'load', initialize ); GEvent 命名空间可用于 Google Maps API JavsScript。
    【解决方案2】:

    我正在寻找一种方法来自己做类似的事情。我尝试使用 Google Maps API 搜索位置,但有时会出错。最终我查询了与城镇相关的维基百科页面并解析了坐标,然后使用了这些。可能不是您正在寻找的解决方案,但它对我有用。我建议先尝试搜索 Maps API 作为 Eduardo 的详细信息,但如果这不起作用,则可能会这样做。

    【讨论】:

      【解决方案3】:

      您可以从 Javascript 向 Google 的地理编码服务发起 HTTP 调用,向其传递地名/邮政编码,然后返回纬度/经度。

      我使用 CSV 选项执行此操作,因为我从 ASP 调用它,但我认为您也可以返回 XML 或 JSON。

      如果您有 Google 地图 API 密钥,请关闭此 URL: http://maps.google.com/maps/geo?gl=uk&q=guildford,+uk&output=csv&key=XXXXXXXXXXX

      返回的第一个参数是响应码。 200代表成功。 然后你得到纬度和经度,用逗号分隔。

      【讨论】:

        猜你喜欢
        • 2018-01-16
        • 1970-01-01
        • 1970-01-01
        • 2016-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-26
        • 2012-12-27
        相关资源
        最近更新 更多