我正在尝试使用谷歌地图构建一个热图,我编写了这段代码,但现在你可以看到我正在向它传递硬编码值,我想在return语句中使用一个循环,因为我正在使用MySQL和所有信息将存储在数据库中,因此当我调用此函数时,它应该在地图上创建尽可能多的点,因为许多值都存储在数据库中。
function getPoints()
{
return [
new google.maps.LatLng(28.81820630, 77.05907876),
new google.maps.LatLng(28.8097835, 77.05673218),
new google.maps.LatLng(28.8097835, 77.003688),
new google.maps.LatLng(28.8097835, 77.002815),
new google.maps.LatLng(28.782992, 77.002112),
new google.maps.LatLng(28.783100, 77.001061),
new google.maps.LatLng(28.783206, 77.000829),
new google.maps.LatLng(28.783273, 77.000320),
new google.maps.LatLng(28.783316, 77.000023),
new google.maps.LatLng(28.783357, 77.039790),
new google.maps.LatLng(28.783281, 77.039687),
new google.maps.LatLng(28.783368, 77.039666),
new google.maps.LatLng(28.783383, 77.039590),
new google.maps.LatLng(28.783508, 77.039525),
new google.maps.LatLng(28.783802, 77.039591),
new google.maps.LatLng(28.780107, 77.039668),
new google.maps.LatLng(28.780206, 77.039686),
new google.maps.LatLng(28.780386, 77.039790),
new google.maps.LatLng(28.780701, 77.039902),
new google.maps.LatLng(28.780965, 77.039938),
new google.maps.LatLng(28.785010, 77.039907),
new google.maps.LatLng(28.785360, 77.039952),
new google.maps.LatLng(28.785715, 77.000030),
new google.maps.LatLng(28.786117, 77.000119),
new google.maps.LatLng(28.786560, 77.000209),
new google.maps.LatLng(28.786905, 77.000270),
new google.maps.LatLng(29.786905, 77.000270)
];
}
我们可以在return语句中使用JavaScript中的循环语句吗?如果是这样呢?
答案 0 :(得分:1)
不,这是不可能的。但是为什么你不首先构建数组然后返回它呢?
function getPoints() {
var array = [];
for (...) {
array.push(new google.maps.LatLng(value1, value2));
}
return array;
}
答案 1 :(得分:0)
您不能在JavaScript中使用服务器上的循环来打印JavaScript返回语句中的值。
<script>
<%!
String getPointsFromData() {
return myGetPointsLoopMethod();
}
%>
function getPoints()
{
return [
<% getPointsFromData(); %>
];
}
</script>
或者你可以这样做:
<script>
function getPoints()
return [
<%
InitialContext ctx;
DataSource ds;
Connection conn;
Statement stmt;
ResultSet rs;
try {
ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/MySQLDataSource");
//ds = (DataSource) ctx.lookup("jdbc/MySQLDataSource");
conn = ds.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT lat,long * FROM table");
while(rs.next()) {
%>
new google.maps.LatLng(<%= rs.getString("Lat") %>, <%= rs.getString("Lon") %>),
<%
}
}
catch (Exception e) {
}
%>
];
}
</script>
</body>
答案 2 :(得分:0)
函数内部的返回只能一次调用一次。
function YourFuncName()
{
var arr =[
new google.maps.LatLng(28.81820630, 77.05907876),
new google.maps.LatLng(28.8097835, 77.05673218),
new google.maps.LatLng(28.8097835, 77.003688),
new google.maps.LatLng(28.8097835, 77.002815),
new google.maps.LatLng(28.782992, 77.002112),
new google.maps.LatLng(28.783100, 77.001061),
new google.maps.LatLng(28.783206, 77.000829),
new google.maps.LatLng(28.783273, 77.000320),
new google.maps.LatLng(28.783316, 77.000023),
new google.maps.LatLng(28.783357, 77.039790),
new google.maps.LatLng(28.783281, 77.039687),
new google.maps.LatLng(28.783368, 77.039666),
new google.maps.LatLng(28.783383, 77.039590),
new google.maps.LatLng(28.783508, 77.039525),
new google.maps.LatLng(28.783802, 77.039591),
new google.maps.LatLng(28.780107, 77.039668),
new google.maps.LatLng(28.780206, 77.039686),
new google.maps.LatLng(28.780386, 77.039790),
new google.maps.LatLng(28.780701, 77.039902),
new google.maps.LatLng(28.780965, 77.039938),
new google.maps.LatLng(28.785010, 77.039907),
new google.maps.LatLng(28.785360, 77.039952),
new google.maps.LatLng(28.785715, 77.000030),
new google.maps.LatLng(28.786117, 77.000119),
new google.maps.LatLng(28.786560, 77.000209),
new google.maps.LatLng(28.786905, 77.000270),
new google.maps.LatLng(29.786905, 77.000270)];
return arr;
}
如果您的数据未经过硬编码,您可以执行循环,将数据添加到arr(数组),然后再将其传递给return。例如:
function YourFunctionName()
{
var arr = [];
for(var i=0; i<10; i++)
{
arr.push(i);
}
return arr;
}
上述代码的返回结果将是0-9
的数组