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),它应该只是30.xxx和-97.xxx。谢谢你的帮助!
答案 0 :(得分:3)
猜测,数据中的第3列是纬度,第4列是经度,对吗?如果是这样,那么您的问题是您错误地使用google.maps.LatLng
。 LatLng
构造函数需要一个(lat,long)对作为参数,即:
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());
答案 1 :(得分: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));