【发布时间】:2015-01-10 07:30:41
【问题描述】:
我正在尝试从 google maps api 获取地址,并在我的表的右列中显示该地址,但此时还没有值。当他们在代码中定义了自定义地址时,会显示此地址,但是当它需要显示来自 google maps api 的地址时,它不会显示。我需要更改哪些内容才能显示这些内容?
var oTable = $("#example").dataTable({
"aoColumns": [{
"sTitle": "Time"
}, {
"sTitle": "Lat"
}, {
"sTitle": "Long"
}, {
"sTitle": "Addr"
}]
});
var p = [
["10:00:00", "78.8807865", "17.8921649", "got Address"]
];
for (var j = 0; j < 400; j++) {
p.push(["10:00:"+j, "78.4807865", "17.4921649", ""]);
}
alert(p.length);
oTable.fnAddData(p);
for (var i = 0; i < p.length; i++) {
if (p[i][3] == "") {
var geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(p[i][1], p[i][2]);
function getAddr(i){
geocoder.geocode({
"latLng": latlng
}, function(results, status) {
var address;
if (status == 'OVER_QUERY_LIMIT') {
address = 'Loading...';
setTimeout(function(){ getAddr(i); }, 1000);
} else if (status == 'OK') {
address = results[0].formatted_address;
} else {
address = 'Error: ' + status;
}
p[i][3] = address;
oTable.fnUpdate(p[i], i);
});
}
getAddr(i);}
}
<link href="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/css/jquery.dataTables.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.4/jquery.dataTables.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<table id="example"></table>
更新代码
- 使用此更新后的代码BROWSER NOT RESPONDING 和 BROWSER STRUCK。
- 任何关于调用客户端谷歌地图 api 的建议,避免浏览器不响应和浏览器被击中(如果需要更多时间也不是问题,需要解决方案以解决不影响浏览器的问题),
- 提前致谢。
【问题讨论】:
-
稍微偏离主题,但非常基本的 Javascript 范围 - 您声明“var i”两次,但范围意味着它甚至在第一个声明之前就存在于整个块中(第二个是多余的) - stackoverflow.com/a/500459/3328079 - 具体参见第 8 点
标签: javascript jquery google-maps jquery-ui jqgrid