0
function createBoundingBox() {
outputDiv = document.getElementById('outputDiv');
outputDiv.innerHTML = '';
var queryList = [];
queryList.push("SELECT 'WEB', 'NAME', 'ADDRESS', 'Lat', 'Lng', 'WEB1' FROM ");
queryList.push(Table);
queryList.push(" WHERE " + where + " AND ");
queryList.push("ST_INTERSECTS('GEOMETRY', ");
queryList.push("RECTANGLE(LATLNG");
queryList.push(sw);
queryList.push(", LATLNG");
queryList.push(ne);
queryList.push("))");
var query = encodeURIComponent(queryList.join(''));
var gvizQuery = new google.visualization.Query(
    'http://www.google.com/fusiontables/gvizdata?tq=' + query);

gvizQuery.send(function(response) {

    numRow = response.getDataTable().getNumberOfRows();
    var datatable = response.getDataTable();


    if (datatable && datatable.getNumberOfRows()) {
     //   var linkList = [];

        var newLinkList = [];




        for (var i = 0; i < numRow; i++) {
            var name = response.getDataTable().getValue(i, 1);
            nameList.push(name);
            var address = response.getDataTable().getValue(i, 2);
            addressList.push(address);
            var latitude = new google.maps.LatLng(response.getDataTable().getValue(i, 3));   alert(latitude)
            latitudeList.push(latitude);
            var longitude = new google.maps.LatLng(response.getDataTable().getValue(i, 4));
            longitudeList.push(longitude);
            var newLink = response.getDataTable().getValue(i, 5);
            newLinkList.push("<a name = 'link' id="+"'" + i + "'" + "onmouseover='getId(this)' href=" + newLink + " target='_blank'>" + name + "</a>");



            infoContent.push("name" + name + "<br>address: "+address);

            //       var link = response.getDataTable().getValue(i, 0);
   //         linkList.push(link);


        }

        names = newLinkList.join("<br>") ;
        outputDiv.innerHTML = numRow+ " results nearby " + sAddress + "<br><br>";
        outputDiv.innerHTML += names;


    }



});

}

これは、Fusion Table からデータをクエリするコードです。緯度と経度が (30.xxx, NaN) と (-97.xxx, NaN) のように表示されるのはなぜでしょうか。ご協力ありがとうございました!

4

2 に答える 2

3

推測では、データの列 3 は緯度で、列 4 は経度ですよね?もしそうなら、あなたの問題はあなたがgoogle.maps.LatLng間違って使用していることです. LatLngコンストラクターは、引数として (緯度、経度) のペアを期待します。つまり、次のようになります。

var latLng = new google.maps.LatLng(latitude, longitude);

LatLng オブジェクトを返します。したがって、次のように呼び出すと:

var latitude = new google.maps.LatLng(response.getDataTable().getValue(i, 3));
var longitude = new google.maps.LatLng(response.getDataTable().getValue(i, 4));

コンストラクターは、毎回経度なしで緯度を与えていると考えます。あなたがしたいことはこれです:

var inputLatitude = response.getDataTable().getValue(i, 3);
var inputLongitude = response.getDataTable().getValue(i, 3);
var latLng = new google.maps.LatLng(inputLatitude, inputLongitude);
latitudeList.push(latLng.lat());
longitudeList.push(latLng.lng());
于 2013-10-04T00:09:03.987 に答える
0

これ:

 var latitude = new google.maps.LatLng(response.getDataTable().getValue(1, 3));   
 latitudeList.push(latitude);
 var longitude = new google.maps.LatLng(response.getDataTable().getValue(i, 4));
 longitudeList.push(longitude);

おそらく次のようになります。

 var latitude =response.getDataTable().getValue(i, 3);
 latitudeList.push(latitude);
 var longitude = response.getDataTable().getValue(i, 4);
 longitudeList.push(longitude);

または、結合された google.maps.LatLng を単一の配列に入れます

 var latitude =response.getDataTable().getValue(i, 3);
 var longitude = response.getDataTable().getValue(i, 4);
 latlngList.push(new google.maps.LatLng(latitude,longitude));
于 2013-10-04T00:02:30.170 に答える