【发布时间】:2014-06-12 20:10:03
【问题描述】:
我正在将 JPA、Servlets 和 JSP 用于我正在从事的 google map 项目.
JPA 实体称为“Locations”
"Locations" 实体类有一个构造函数,它接受:
public Locations(Double latitude,Double longitude,String name,int people)
{this.latitude = latitude; this.longitude=longitude,this.name=name, this.people=people}
我有一个名为 LocationData 的类,我在一个名为 getLocation 的方法中返回数据库中所有位置的 ArrayList 以及它们的 latitude,longitude,PeopleAvailableNow:
ArrayList locations = new ArrayList() ;
List<Location> locations = query.getResultList(); //This contains all the Locations
for (Location s : locations) {
locations.add(new Location(s.lat,s.lon,s.name,s.people))
}
return locations
在我的 servlet 中,我这样传递位置列表:
ArrayList list = ld.getLocations();
String json = new Gson().toJson(list);
response.setContentType("text/json");
response.setHeader("Cache-Control", "no-cache");
response.getWriter().write(json);
在我的 JSP 使用的 map.js 中
// get locations from server
$.getJSON("locations", {}, function(data){
$.each(data, function(index, element){
var marker = new google.maps.Marker({
position: new google.maps.LatLng(element.lat, element.lng),
map: map,
title: element.name,
people : element.people,
});
markers.push(marker);
所以现在,清楚地了解程序的运行方式,所有标记都出现在地图上,我使用信息窗口来显示标记(位置)的人和名称。问题是,数据库中的人数总是会发生变化,因为一个人可以离开一个地方去另一个地方。
- 我怎样才能在一定的时间间隔内总是刷新“人”值(从实体中读取)?
- 我的设计无法容纳这个,我怎么能改变它来满足这个能力?
【问题讨论】:
-
设置刷新计时器以重新加载页面或重新执行 getJSON 调用应该不会很困难。根据您允许它的频率,您可以毫无差别地消耗大量资源。
标签: java ajax google-maps jsp