Reputation: 99
I have a problem and I wonder could anyone help me. In a result I want to make some small maps with a different GPS track on them. But I have a problem with getting data. I need to get GPS track from a server. Then extract coordinates of all dots which belong to this track and put this data in js(on the map). I'll show: Here I have a controller:
@Controller
public class TracksGeopointsController {
@Autowired
private IndexGeopointsService indexGeopointsService;
@Autowired
private TracksGeopointsService tracksGeopointsService;
@Autowired
private FileService fileService;
@Autowired
private MySaxParser mySaxParser;
@RequestMapping(value = TracksGeopointsRoutes.TRACKS, method = RequestMethod.GET)
public String tracks(Model model){
List<TracksGeopointsDoc> tracks = tracksGeopointsService.findAllTracks();
Map<ObjectId, List<DotGeopointsDoc>> dotsMap = new HashMap<ObjectId, List<DotGeopointsDoc>>();
for (TracksGeopointsDoc track : tracks){
try {
List<DotGeopointsDoc> dots = tracksGeopointsService.getAllTrackDots(track.getId());
dotsMap.put(track.getId(), dots);
model.addAttribute("dotsMap", dotsMap); //here I put data to a model to transport it to JSP
model.addAttribute("tracks", tracks); //here I put data to a model to transport it to JSP
} catch (TrackNotExistException e) {
e.printStackTrace();
}
}
Breadcrumbs breadcrumbs = indexGeopointsService.breadcrumbs();
breadcrumbs.setCurrentPageTitle("GPS треки");
model.addAttribute("breadcrumbs", breadcrumbs);
return "com.ub.geopoints_test.tracks";
}
}
And my JSP looks like that:
<div class="row">
<div class="col-md-12">
<c:forEach var="track" items="${tracks}" varStatus="count"> //I know how to extract data from model above - ${tracks}
<script>
var map = L.map('map');
// create the tile layer with correct attribution
var osmUrl='http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
var osmAttrib='Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors';
var osm = new L.TileLayer(osmUrl, {minZoom: 1, maxZoom: 12, attribution: osmAttrib});
map.addLayer(osm);
L.Routing.control({
waypoints: [
L.latLng(57.74, 11.94), // here I want to put data that I gave to model. If it was not js, I'll do this: L.latLng(${dotsMap.get(track.id).lat}, ${dotsMap.get(track.id).lat}) But I don't know how can I do it with js
L.latLng(57.6792, 11.949),
L.latLng(57.65, 11.888)
]
}).addTo(map);
</script>
</c:forEach>
</div>
</div>
Please, could anyone help me. I really don't know how I can do it.
Upvotes: 0
Views: 1566
Reputation: 311
In the same jsp page if you write js code you can store model value in java script variable. For example :
var varName = ${modelName.variableName}
So you can render any model value in the javascript code block in the same jsp.
Upvotes: 1