PDA

View Full Version : [HTML]Marker multipli in Google Maps


Edde
31-07-2008, 16:18
Ciao

Devo integrare google maps all'interno della mia portlet, sotto liferay...

Sto usando Google Maps Tag Library (http://www.lamatek.com/GoogleMaps/)

Non riesco ad inserire più marker all'interno della stessa mappa...

Questo è il mio codice:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="conf/googlemaps.tld" prefix="googlemaps" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<googlemaps:map id="map" width="800" height="600" version="2" type="STREET" zoom="12" debug="on" language="it">
<googlemaps:key domain="localhost" key="laMiaChiave"/>

<googlemaps:point id="point1" address="" city="Barcellona pozzo di gotto" zipcode="98051" state="Messina" />

<googlemaps:point id="point2" city="Furnari" zipcode="98054" state="Messina" />

<googlemaps:marker id="marker1" point="point1">
<googlemaps:infowindow display="false">
Barcellona pozzo di gotto
</googlemaps:infowindow>
</googlemaps:marker>

<googlemaps:marker id="marker2" point="point2">
<googlemaps:infowindow display="false">
Furnari
</googlemaps:infowindow>
</googlemaps:marker>


<googlemaps:panControl enable="true"/>
<googlemaps:typeControl enable="true"/>
<googlemaps:zoomControl enable="true" size="large"/>
<googlemaps:wheelControl enable="true"/>

</googlemaps:map>

<googlemaps:scripttag id="map"></googlemaps:scripttag>
<googlemaps:javascript id="map"></googlemaps:javascript>
</head>
<body>

<div align="center">
<googlemaps:div id="map"></googlemaps:div>
<googlemaps:initialize id="map"></googlemaps:initialize>
</div>

E questa è una porzione del codice javascript che mi genera:


var marker2 = new GMarker(new GPoint(15.123219, 38.103785));
map.addOverlay(marker2);
GEvent.addListener(marker2, 'click', function() {
marker2.openInfoWindowHtml("<div style=\"white-space: nowrap;\">Barcellona pozzo di gotto</div>");
});

var marker2 = new GMarker(new GPoint(15.123219, 38.103785));
map.addOverlay(marker2);
GEvent.addListener(marker2, 'click', function() {
marker2.openInfoWindowHtml("<div style=\"white-space: nowrap;\">Barcellona pozzo di gotto</div>");
});
Come potete vedere, al contrario di quanto accade nei suoi esempi (in cui crea marker1 e marker2, associati a coordinate diverse), crea due marker associati entrambi all'ultimo che ho definito...

Quindi ne crea due esattamente alle stesse coordinate (ed ovviamente io ne vedo una sola...).

Possibili soluzioni?
O qualche alternativa valida a questa tag library (che però era davvero mooolto comoda...)?

Grazie

Edde
31-07-2008, 21:57
Già che ci sono chiedo un'altra cosa...

Ho un altro paio di problemi nell'utilizzo di queste mappe...

Il primo è la precisione: se indichi città, provincia e cap lui dà assoluta precedenza a quest'ultimo fregandosene degli altri parametri. Il che significa che, nel caso di cap condivisi da diversi comuni, lui piazza il marker nella zona centrale identificata da quel cap (il che significa che ad esempio, non punta con precisione a "Barcellona pozzo di gotto").
Vice versa, in alcuni casi, indicando solamente comune e provincia, lui punta sulla provincia.
Ed esempio, se inserisco solamente questi due attributi:

<googlemaps:point id="point1" address="" city="Barcellona pozzo di gotto" state="Messina" />


Lui mi mette il marker a messina... che è parecchio distante dalla città che ho indicato io...


Il secondo riguarda l'attributo "country" del tag <googlemaps:point>
Nei suoi esempi usa country=US e funziona. Se provo a mettere IT o FR (sulla documentazione si dice che l'indicatore della nazione è quello della specifica ISO... che a naso dovrebbe essere il dominio utilizzato per i siti web di una data nazione... nel nostro caso, "it") va in conflitto qualche cosa, e piazza il puntatore poco ad ovest dell'africa centrale (ad occhio, direi che non trovando corrispondenze lui metta l'indicatore all'esatto centro della mappa).

Edde
01-08-2008, 20:33
Risolto il problema dei marker multipli.

E' stato sufficiente seguire quanto detto nella documentazione:

1. Open the web.xml file located in the <%TOMCAT_HOME%>/conf directory of your server installation.
2. Look for the section where the JSP servlet is mapped. It starts with:

<servlet>
<servlet-name>jsp</servlet-name>

3. Look for a section called enablePooling. If it's defined it should look like this:

<init-param>
<param-name>enablePooling</param-name>
<param-value>true</param-value>
</init-param>

If it's not defined, that okay.
4. If you have a section already defined, change the <param-value> to false. If you do not have it defined, simply copy and paste this definition in the <init-param> section:

<init-param>
<param-name>enablePooling</param-name>
<param-value>false</param-value>
</init-param>

5. Now you'll have to restart Tomcat.


Anche se bisogna dire che nel mio server il parametro enablePooling non c'era proprio, quindi a leggere queste righe non avrei dovuto toccare nulla...
Ero convinto di aver tentato già questa strada, ma evidentemente avevo fatto qualche cacchiata... oggi a mente più lucida ho finalmente risolto :sisi:

Rimane il problema di precisione nel calcolo di alcuni geocodici... ma è possibile che le api messe a disposizione per lo sviluppo siano meno precise del google maps vero e proprio?