如何使MSSQL查询数据可用于页面上的Javascript,而无需再次查询数据库?
对于我用GoogleMapsAPI制作的页面,我需要查询多个标记位置以及每个标记的进一步信息。我正在使用ColdFusion查询数据库 我已经大致规划了这个过程应该如何运作如何使MSSQL查询数据可用于页面上的Javascript,而无需再次查询数据库?,javascript,sql-server,google-maps-api-3,coldfusion,Javascript,Sql Server,Google Maps Api 3,Coldfusion,对于我用GoogleMapsAPI制作的页面,我需要查询多个标记位置以及每个标记的进一步信息。我正在使用ColdFusion查询数据库 我已经大致规划了这个过程应该如何运作 <cfquery datasource="mapInfo" name="markerQuery"> Select * from locations </cfquery> <cfset arr = ArrayNew(1)> <cfoutput query="markerQ
<cfquery datasource="mapInfo" name="markerQuery">
Select * from locations
</cfquery>
<cfset arr = ArrayNew(1)>
<cfoutput query="markerQuery">
<cfset marker = {#markerid# = 'new google.maps.LatLng(#markerQuery.lat#,#states.lng#)'}>
<cfset arrayAppend(arr,marker)>
</cfoutput>
<script type="text/javascript" charset="utf-8">
var markers = <cfoutput>#serializeJson(arr)#</cfoutput>;
</script>
如何在Javascript中保留查询信息,以便在单击标记或匹配按钮时将其显示在文本框中?您应该做的是循环查询,将数据从记录集直接输出到Javascript数组中。然后在JS中使用它来循环,创建标记和信息窗口。大概是这样的:
<script type="text/javascript">
var arrMarkers = [];
<cfoutput query="getData">
arrMarkers.push({
lat: #getData.lat#,
lng: #getData.lng#,
title: '#JSStringFormat(getData.title)#',
description: '#JSStringFormat(getData.description)#'
});
</cfoutput>
function initialize() {
var latlng, marker;
var infowindow = new google.maps.InfoWindow({
content: ""
});
var map = new google.maps.Map(document.getElementById("map"), {
zoom: 15,
center: new google.maps.LatLng(51.532315,-0.1544),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
for (var i = 0; i < arrMarkers.length; i++) {
latlng = new google.maps.LatLng(arrMarkers[i].lat, arrMarkers[i].lng);
marker = new google.maps.Marker({
position: latlng,
map: map,
title: arrMarkers[i].title
});
bindInfoWindow(marker, map, infowindow, arrMarkers[i].description);
}
}
function bindInfoWindow(marker, map, infowindow, strDescription) {
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(strDescription);
infowindow.open(map, marker);
});
}
</script>
我刚刚用一些测试代码编辑了这个问题。看起来怎么样?我个人不希望像新的google.maps.LatLng那样将JS代码写入CFML字符串中。嘿,谢谢。我尝试了此代码,但地图未显示。标题:“JSStringFormatgetData.title”后面不应该有逗号吗?虽然添加这个仍然不能使它工作。确实应该有。让我试着运行我自己的代码,看看出了什么问题。我假设您正在调用GoogleMapsJS并在窗口加载时调用initialize函数,但是如果您需要关于这些问题的建议,请告诉我们。添加逗号并添加正确的onload initialize后,这项操作现在可以正常工作。谢谢在我的MSSQL数据库中,我的标题和地址为varchar。此数据类型是否适用于JSStringFormat?