我正在使用谷歌地图api v3代码。
我在MySQL中保存了所有标记,我想检索这些标记并在地图上显示它们。我正在寻找一个代码来执行此操作,但我发现所有代码都使用xml文件来保存检索到的数据。我的想法不同,我可以从MySQL检索数据并将其保存在二维数组中。
我想知道这是不是一个坏主意,会让我的网站变慢?
我的代码中的这些部分:
(markersDAO.java)
String searchQuery = "select * from map";
try
{
//connect to DB
currentCon = ConnectionManager.getConnection();
stmt=currentCon.createStatement();
rs = stmt.executeQuery(searchQuery);
int i=0;
// if user does not exist set userExits to false
while (rs.next()){
m[i][0]=rs.getString(1);
m[i][1]=Double.toString(rs.getDouble(2));
m[i][2]=Double.toString(rs.getDouble(3));
i++;
}
}
catch (Exception ex)
{
System.out.println("Datamap failed 2: An Exception has occurred! " + ex);
}
return m;
(适用googlemap.jsp)
<% markersDAO u= new markersDAO();
String[][] locations= u.dataMap();%>
<script type="text/javascript">
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: new google.maps.LatLng(-33.92, 151.25),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker;
var f=0;
var myOptions= {
disableAutoPan: false
,maxWidth: "auto"
,pixelOffset: new google.maps.Size(0, 0)
,zIndex: null
,infoBoxClearance: new google.maps.Size(1, 1)
,isHidden: false
,pane: "floatPane"
,enableEventPropagation: false
};
<%for (int i = 0; i < locations.length; i++) { %>
marker = new google.maps.Marker({
position: new google.maps.LatLng(<%=locations[i][1]%>, <%=locations[i][2]%>),
map: map,
});
var infobox = new InfoBox(myOptions);
google.maps.event.addListener(marker, 'mouseover', (function(marker,f) {
return function() {
infobox.setContent('<%=locations[i][0]%>');
infobox.open(map, marker);
}
f++;
})(marker, f));
<% } %>
</script>
答案 0 :(得分:0)
我认为你的想法可以很好地工作,我做的是将数据保存在JSON对象上,在我生成带有所有标记信息的JSONArray并从Javascript函数中读取该数据以在地图上创建标记,我完成了200个标记的快速工作。 一些代码可以给你一些不同的想法:
JSONArray ajson = new JSONArray();
while(rset.next()){
JSONObject json = new JSONObject();
json.put("id_coord", rset.getString("IDCOORD"));
json.put("nombreequipo", rset.getString("MarkerName"));
json.put("lat", rset.getDouble(5));
json.put("long", rset.getDouble(6));
ajson.put(json);
}
在javascript上解析JSON
var data = JSON.parse(response);
for (var i=0; i<data.length; i++) {
displayLocation(data[i]);
}
显示位置功能:
function displayLocation(location){
var latLng = new google.maps.LatLng(parseFloat(location.latitud), parseFloat(location.longitud));
var marker = new google.maps.Marker({
position: latLng,
map: map,
icon: imagen,
draggable: false,
visible: true,
title: location.nombreequipo
});
}