【问题标题】:Google Maps API JS: trying to convert the address to Lat LongGoogle Maps API JS:尝试将地址转换为 Lat Long
【发布时间】:2012-01-27 19:51:45
【问题描述】:

JavaScript 谷歌地图 API V3

我正在尝试使用来自 Google Maps API v3 的 geocode 将地址转换为纬度/经度,但它不起作用。

其余代码工作正常。

我确定这是一个非常简单的问题!

代码

        var map;
    function initialize() {
            var infoWindow = new google.maps.InfoWindow;
            var myLatLng = new google.maps.LatLng(-23.000516, -43.413473);
            var myOptions = {
                zoom: 15,
                center: myLatLng,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };

    map = new google.maps.Map(document.getElementById('mapa'), myOptions);

        // Download do XML
        downloadUrl("http://podium.pvidesign.com.br/mapa/casas.xml", function(data) {
            var icone = 'http://podium.pvidesign.com.br/mapa/imagens/casa.png';
            var imoveis = data.documentElement.getElementsByTagName("imovel");
                for (var i = 0; i < imoveis.length; i++) {
                    //var latlng = new google.maps.LatLng(parseFloat(imoveis[i].getAttribute("lat")), parseFloat(imoveis[i].getAttribute("lng")));
                    var logradouro = imoveis[i].getAttribute("logradouro");
                    var endereco = imoveis[i].getAttribute("endereco");
                    var numero = imoveis[i].getAttribute("numero");
                    var bairro = imoveis[i].getAttribute("bairro");
                    var cidade = imoveis[i].getAttribute("cidade");
                    var imagem = imoveis[i].getAttribute("img");
                    var end_completo = logradouro + " " + endereco + ", " + numero + ", " + bairro + ", " + cidade;
                    var nome = imoveis[i].getAttribute("nome");
                    var desc = imoveis[i].getAttribute("desc");
                    var html = "<b>" + nome + "</b><br>" + "<img src='" + imagem + "'><br>" + desc + "<br>" + end_completo;

                    // Coletando Lat e Long atraves do endereço
                    var geocoder = new google.maps.Geocoder();
                    geocoder.geocode( {'address': end_completo}, function(results, status) {

                            var latLong = results[0].geometry.location;

                    }); // Fim Coletando

                    var houseMarker = new google.maps.Marker({
                        title:nome,
                        position:latLong,
                        map:map,
                        icon:icone
                    });
                bindInfoWindow(houseMarker, map, infoWindow, html);
                } 
            }); 

        // Balão de informação
        function bindInfoWindow(houseMarker, map, infoWindow, html) {
            google.maps.event.addListener(houseMarker, 'mouseover', function() {
            infoWindow.setContent(html);
            infoWindow.open(map, houseMarker);
            });
            google.maps.event.addListener(houseMarker, 'mouseout', function() {
            infoWindow.close();
            });
        };

    }; 

【问题讨论】:

    标签: javascript google-maps geocode


    【解决方案1】:

    从葡萄牙语翻译(胡乱猜测),您似乎正在尝试对包含以下内容的地址进行地理编码:街道、地址、号码、社区和城市。可能太多了,我会尝试只使用街道、号码、城市,看看是否有帮助。

    另外,您的代码非常乐观,响应中没有检查状态代码。您应该在response 中检查Status Codes,如果不是google.maps.GeocoderStatus.OK,则响应中不会有任何结果。

    尝试Google Maps API v3 Geocoder Tool 使用不同的样本输入(来自您的数据)以查看其行为方式,您可能会发现地址格式、数据本身等方面存在问题。尝试使您的地址看起来像您的地址'd用来运送包裹。

    另外请注意,您的方法在加载地图时最多只能对 10 个地址进行地理编码。如果您需要显示更多内容,您可能需要使用服务器端地理编码。查看Geocoding Strategies 文章并确保为您的用例使用正确的服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-06
      • 2011-03-27
      • 2016-09-18
      • 2012-01-29
      相关资源
      最近更新 更多