0

その座標に地図の中心を設定するために、URLから座標を取得してGoogleマップに送信したいと思います。条件を設定しました。座標に値がない場合は機能しますが、値がない場合はマップが中心に設定されません。これは私のコードです。

function getUrlVars()
            {
                var vars = [], hash;
                var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
                for(var i = 0; i < hashes.length; i++)
                {
                    hash = hashes[i].split('=');
                    vars.push(hash[0]);
                    vars[hash[0]] = hash[1];
                }
                return vars;
            }
            var coordenadas = getUrlVars()["coordenadas"];


            var map;
            var infowindow;
            var geocoder;

            if (coordenadas){

                function init() {
                    alert ("coordenadas "+coordenadas);
                    geocoder = new google.maps.Geocoder();
                    map = new google.maps.Map(document.getElementById('map_canvas'), {
                        zoom: 5,
                        mapTypeId: google.maps.MapTypeId.ROADMAP,
                        center: new google.maps.LatLng(coordenadas)                 
                    });             
                    infoWindow = new google.maps.InfoWindow();
                    google.maps.event.addListener(map, 'click', clickedAddress);        

                }
            }
            else{
                function init() {
                    geocoder = new google.maps.Geocoder();
                    map = new google.maps.Map(document.getElementById('map_canvas'), {
                        zoom: 5,
                        mapTypeId: google.maps.MapTypeId.ROADMAP,
                        center: new google.maps.LatLng(40.346544, -3.848877)                    
                    });             
                    infoWindow = new google.maps.InfoWindow();
                    google.maps.event.addListener(map, 'click', clickedAddress);        

                }
            };

私は何を悪いのですか?

4

1 に答える 1

0

google.maps.LatLng は、カンマで区切られた 2 つの数値を含む文字列ではなく、2 つの浮動小数点数を引数として取ります。

var coords=coordenadas.split(',');

それから

center: new google.maps.LatLng(parseFloat(coords[0]), parseFloat(coords[1]))

「if」内に複数の「init」関数を作成する方法にも奇妙なことがありますが、それは私にとってはうまくいきません(少なくともIEでは)。これは次のことを行います。

        if (!!coordenadas){

             init = function() {
                alert ("coordenadas "+coordenadas);
       var coords=coordenadas.split(',');
                map = new google.maps.Map(document.getElementById('map_canvas'), {
                    zoom: 5,
                    mapTypeId: google.maps.MapTypeId.ROADMAP,
            center: new google.maps.LatLng(parseFloat(coords[0]), parseFloat(coords[1]))
                });             
                infoWindow = new google.maps.InfoWindow();
                //google.maps.event.addListener(map, 'click', clickedAddress);        

            }
        }
        else{
            init = function () {
                geocoder = new google.maps.Geocoder();
                map = new google.maps.Map(document.getElementById('map_canvas'), {
                    zoom: 5,
                    mapTypeId: google.maps.MapTypeId.ROADMAP,
                    center: new google.maps.LatLng(40.346544, -3.848877)                    
                });             
                infoWindow = new google.maps.InfoWindow();
                // google.maps.event.addListener(map, 'click', clickedAddress);        

            }
        };

実施例

于 2013-02-15T12:36:45.910 に答える