2016-04-11 9 views
0

printInfo関数からGoogleマップのオブジェクトに緯度と経度の値を渡そうとしています。私はタブで区切られたファイルを読み込んでいますが、問題なく値を取得できますが、それをinitMap関数に渡して中央のオブジェクトに渡す方法が残っています。値を渡すためにコールバック関数を使用する必要がありますか?もしそうなら、私は100%それを行う方法ではありません。私はグローバル変数を作成しようとしましたが、うまくいかないようです。タブ区切りファイルの値をGoogle Mapsオブジェクトに渡す

function initMap() { 
    var mapDiv = document.getElementById('map'); 
    var mapProp = { 
     center: {lat: 44.540, lng: -78.546}, 
     zoom: 8 
    }; 
    var map = new google.maps.Map(mapDiv,mapProp); 
    } 
    google.maps.event.addDomListener(window,'load',initMap); 


//Load in tab delimited file 
d3.text("ix_cities.tmpl", function(text){ 

    printInfo(text); 
}); 


//print out the info in the console 
//I'm trying to pass the Lat/Long values to the google map API 
function printInfo(text) { 
    var info = d3.tsv.parseRows(text); 
    console.log(info); 

    var infoLen = info.length; 

    console.log("Cities file Length: " + infoLen); 

    for(var i = 0; i < infoLen; i++){ 

     console.log("Title: " + info[i][0]); 
     console.log("Street Address: " + info[i][1]); 
     console.log("City & ZIP: " + info[i][2]); 
     console.log("Phone Number: " + info[i][3]); 
     console.log("Lat: " + info[i][4]); 
     console.log("Long: " + info[i][5]); 
     console.log("URL: " + info[i][6]); 
    } 



} 
+0

値を正確に何をしたいですか? –

+0

まあ、ここに渡したいです var mapProp = { center:{lat:VAL1 lng:VAL2}、 ズーム:8 }; – Martin

答えて

0

グローバル変数が不良です。名前空間を使用します。

(function(myMaps) {  
    var map; 
    google.maps.event.addDomListener(window, 'load', initMap); 
    myMaps.initMap = function() { 
     var mapDiv = document.getElementById('map'); 
     var mapProp = { 
      center: { lat: 44.540, lng: -78.546 }, 
      zoom: 8 
     }; 
     map = new google.maps.Map(mapDiv, mapProp); 
    } 
    myMaps.center = function(lat, lng) { 
     map.setCenter(new google.maps.LatLng(lat, lng)); 
    } 
}(window.myMaps = window.myMaps || {})); 

今度は、をjsの他の場所から呼び出します。 Latitudeに合格します。 Longitudeと地図は、その場所の中心になります。 addDomListenerを削除して、csvを読み込んだ後にinitMapを呼び出して、マップの初期化を延期することもできます。引数をinitMaplat/lngと追加します。

いくつかのタイプミス。働くfiddle

+0

それは動作していないようですが、私は名前空間からイベントリスナーを移動してマップをロードしましたが、myMaps.centerを呼び出してLat/Longを渡すと、マップは座標を反映して変化しません。 – Martin

+0

私はmyMaps.centerを試してみると、コンソールでsetCenterが定義されていないと言っています。これは変です。 – Martin

+0

奇妙な。あなたはpanToを試すことができますか? 'map.panTo(new google.maps.LatLng(lat、lng))' –

関連する問題