Dynamiczna mapa google w JSP Spring

0

Witam,

otóż mam pewien problem z dynamicznym dodawaniem punktów z bazy danych do mapy google na JSP w frameworku Spring. Poniżej zamieszczam mój kod :

<%@page import="java.util.Iterator"%>
<%@page import="pl.eventoo.mongodb.dao.WydarzenieDaoImpl"%>
<%@page import="pl.eventoo.domain.Koordynaty"%>
<%@page import="java.util.List"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <style type="text/css">
            #map {
                <!-- width: 300px;
                height: 300px; -->
            }
            #map_wrap {
                position:relative; 
                width: 100%; 
                height:280px;
                padding-top:0px;
                border: 1px solid #aaa;
            }
        </style>

        <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
        <script type="text/javascript">
            var map;
            var markers = [];

            function initialize() {
                var options = {
                    mapTypeControlOptions: {
                        mapTypeIds: [google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.TERRAIN],
                        style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
                    }
                }

            <%
                String id_wydarzenia_session = null;
                List<Koordynaty> koordynaty = null;
                Double szer = null;
                Double wys = null;
                try {
                    id_wydarzenia_session = session.getAttribute("id_wydarzenia").toString();
                    WydarzenieDaoImpl wydarzeniedao = new WydarzenieDaoImpl();
                    koordynaty = wydarzeniedao.pobierzKoordynatyWydarzenia(id_wydarzenia_session);
                    szer = koordynaty.get(0).getSzerokosc();
                    wys = koordynaty.get(0).getWysokosc();
                } catch (Exception e) {
                    System.out.println(e.getMessage());
                }
            %>

                var wysokoscCenter = "<%=wys%>";
                var szerokoscCenter = "<%=szer%>";
                map = new google.maps.Map(document.getElementById('map'));
                map.setCenter(new google.maps.LatLng(wysokoscCenter, szerokoscCenter));
                map.setZoom(17);
                map.setMapTypeId(google.maps.MapTypeId.ROADMAP);

            <%
                Iterator<Koordynaty> iteratorKoordynaty = koordynaty.iterator();
                while (iteratorKoordynaty.hasNext()) {
                    Koordynaty koordynatyDetails = iteratorKoordynaty.next();
             %>
                    addMarker(new google.maps.LatLng(<%=koordynatyDetails.getWysokosc()%>, <%=koordynatyDetails.getSzerokosc()%>), "Marker");
             <%
                }
            %>
            }
            function addMarker(latlng, myTitle) {
                markers.push(new google.maps.Marker({
                    position: latlng,
                    map: map,
                    title: myTitle,
                    icon: "http://maps.google.com/mapfiles/marker" + String.fromCharCode(markers.length + 65) + ".png"
                }));
            }
        </script>

    </head>
    <body>
        <div id="map_wrap" align="center"> 
            <div id="map"></div>
        </div>
        <script type="text/javascript">
            initialize();
        </script>
    </body>
</html>

Podstawienie zamiast dynamicznie dodawane wartości z bazy danych koordynatów punktów np :. addMarker(new google.maps.LatLng(52.4354545,23.234343)) oczywiście skutkuje pokazaniem mapy. Natomiast w przypadku dodania zmiennych javascriptowych, którym zostałe przypisane wartości od zmiennych jstl lub w przypadku kodu jsp w <%=%> niestety skutkuje szarą mapą.

Bardzo prosiłbym o pomoc, gdyż kompletnie nie wiem jak obejść ten problem.

0

A jakie wartości zwracają: <%=koordynatyDetails.getWysokosc()%> oraz <%=koordynatyDetails.getSzerokosc()%> ? Bo może jakieś dziwaczne i dlatego nie działa...

0

Sęk w tym, że właśnie odpowiednie! Np:. 52.234343 oraz 23.2343434 (czyli typ double). Nawet sprawdzam wartości na wejściu w funkcji dodajMarker i są ok, ale niestety Google Maps nie chwyta tych wartości nie wiedzieć czemu ....

0

Wstyd i jeszcze raz wstyd. Okazało się, że jakiś chochlik zamienił mi w bazie koordynaty punktów latitude z longitude.... Zamieszczam prawidłowy kod :

<script type="text/javascript">
            var map;
            var markers = [];

            function initialize() {
                var options = {
                    mapTypeControlOptions: {
                        mapTypeIds: [google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.TERRAIN],
                        style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
                    }
                };

                var pierwszyWysokosc = '<c:out value="${coordinatesList[0].wysokosc}" />';
                var pierwszySzerokosc = '<c:out value="${coordinatesList[0].szerokosc}" />';
                map = new google.maps.Map(document.getElementById('map'));
                map.setCenter(new google.maps.LatLng(pierwszyWysokosc, pierwszySzerokosc));
                map.setZoom(16);
                map.setMapTypeId(google.maps.MapTypeId.ROADMAP);

            <c:forEach items="${coordinatesList}" var="koordynaty">
                addMarker(new google.maps.LatLng(${koordynaty.wysokosc}, ${koordynaty.szerokosc}), "Eventoo");
            </c:forEach>

                }
                function addMarker(latlng, myTitle) {
                    markers.push(new google.maps.Marker({
                        position: latlng,
                        map: map,
                        title: myTitle,
                        icon: "http://maps.google.com/mapfiles/marker" + String.fromCharCode(markers.length + 65) + ".png"
                    }));
                }
        </script>

1 użytkowników online, w tym zalogowanych: 0, gości: 1