Back to top

Autore Topic: Centrare mappa su ip utente  (Letto 12869 volte)

Offline aston82

  • Esploratore
  • **
  • Post: 94
    • Mostra profilo
Centrare mappa su ip utente
« il: 16 Giu 2011, 14:59:00 »
Ciao a tutti,
utilizzo un modulo di Joomla 1.5 per visualizzare una mappa di google.. Vorrei centrarla sulla località del utente che si logga.. sto provando questo script, qualcuno mi può dare una mano?? o darmi un consiglio?
Grazie!!

Codice: [Seleziona]
<script type="text/javascript">
       window.onDomReady = DomReady;
       function DomReady(func) { if(document.addEventListener) { document.addEventListener("DOMContentLoaded", func, false); } else { document.onreadystatechange = function() { readyState(func) } } }
       function readyState(func) { if(document.readyState == "complete") { func(); } }
    </script>
   
   <script src=\"{$baseAddresse}/maps?file=api&amp;v={$map_api_version}&amp;key={$config->googleMapsApiKey}\" type=\"text/javascript\">
   </script>
   
    <script type="text/javascript">
      google.load("search", "1.x", {callback: initialize});

      function initialize() {
        if (google.loader.ClientLocation) {
           var lat = google.loader.ClientLocation.latitude;
           var long = google.loader.ClientLocation.longitude;
           alert ("lat: " + lat + "\nlong: " + long);
         }
         else { alert ("not available"); }
       }
   </script>
   
   <?php
   
//if ($mapControl == 3) {
    //   echo "<script src=\"{$config->liveSite}/modules/{$module_path}extlargemapcontrol.js\" type=\"text/javascript\"></script>";
    //}
    
echo "\n\t <script type=\"text/javascript\">";
    echo 
"\n\t ";
    echo 
"//<![CDATA[ ";
    echo 
"\n\t\t ";
    echo 
"function loadSobiCatOverMap() {";
    echo 
"\n\t\t\t ";
    echo 
"if ( GBrowserIsCompatible() ) {";
    echo 
"\n\t\t\t\t ";
    echo 
"var SobiCatOverMap = new GMap2( document.getElementById(\"sobi2GcatOver\") );";
    echo 
"\n\t\t\t\t ";
    echo 
"SobiCatOverMap.setCenter( new GLatLng( {$centerPointLat}{$centerPointLong} ), {$mapsZoom} );";

mau_develop

  • Visitatore
Re:Centrare mappa su ip utente
« Risposta #1 il: 16 Giu 2011, 15:51:47 »
Vorrei centrarla sulla località del utente che si logga
-----------------------------------------------------------------------
quindi ti serve questo dato... dov'è?

M.

Offline aston82

  • Esploratore
  • **
  • Post: 94
    • Mostra profilo
Re:Centrare mappa su ip utente
« Risposta #2 il: 16 Giu 2011, 16:15:54 »
ciao grazie della risposta,

bè, uso il login di un componente per community che estende quello standard di Joomla aggiungendo "FIELD_ADDRESS" , "FIELD_CITY" , "FIELD_COUNTRY" ( nella tabella jos_community_fields  del mio Db).

Offline aston82

  • Esploratore
  • **
  • Post: 94
    • Mostra profilo
Re:Centrare mappa su ip utente
« Risposta #3 il: 16 Giu 2011, 19:35:23 »
Ok ho fatto questo codice che preleva i campi che mi interessano per lo user  ::)

Codice: [Seleziona]
<?php function JomSocial_field($fieldcode) {
  global 
$database;
  
$user =& JFactory::getUser();
  
$userId $user->get'id' );
  
$sql "SELECT (id) FROM #__community_fields WHERE fieldcode= '$fieldcode'";
  
$database->setQuery$sql );
  
$fieldID $database->loadResult();
  
$sql "SELECT (value) FROM #__community_fields_values WHERE field_id= {$fieldID} && user_id= {$userId}";
  
$database->setQuery$sql );
  echo 
$database->loadResult();
}
?>


<?php JomSocial_field("FIELD_COUNTRY"); ?>
<?php JomSocial_field("FIELD_CITY"); ?>
<?php JomSocial_field("FIELD_ADDRESS"); ?>

(penso sia giusto).. ora come faccio a usarli per centrare la mappa?  :o
Help please!!

mau_develop

  • Visitatore
Re:Centrare mappa su ip utente
« Risposta #4 il: 16 Giu 2011, 19:42:56 »
..no ma aspetta funziona o non funziona... perchè lo dovrebbe fare già di suo

google.loader.ClientLocation.latitude;
var long = google.loader.ClientLocation.longitude;

ma non ho capito cosa stai facendo... usi un modulo che lo permette? lo vuoi modificare?
che è quella serie di "echo"?  Dove lo stai mettendo quello script?

M.

Offline aston82

  • Esploratore
  • **
  • Post: 94
    • Mostra profilo
Re:Centrare mappa su ip utente
« Risposta #5 il: 16 Giu 2011, 20:15:01 »
scusami, non mi sono spiegato benissimo, parlo sempre in inglese ultimamente.
allora: utilizzo un modulo per Sobi2 ( componente di archiviazione in categorie ) che visualizza una in una mappa di google dei marker in corrispondenza delle entry ( tipo gli articoli ).
La mappa che visualizzo ora si centra automaticamente visualizzando tutte le entry inserite..risultato se ho due inserimenti, uno a roma e uno a londra, mi visualizza sempre la mappa dell'europa..e cosi via peggiorando con zoom out sempre più estesi più sono diffuse le entry nel globo.
Per fornire ai miei users una mappa utile vorrei prendere quei dati sulla loro location che mi passano attraverso la registrazione al sito e usarli per centrare la prima visualizzazione della mappa di questo modulo.

la funzione che ho riportato dovrebbe estrapolare i field necessari per l'utente loggato.. almeno credo.
poi andrebbe inserita in qualche modo nel file che ti allego del modulo.. ti posto quello originale, senza i miei pasticci.

(rigo 215 e rigo 408 )
« Ultima modifica: 16 Giu 2011, 20:25:25 da aston82 »

mau_develop

  • Visitatore
Re:Centrare mappa su ip utente
« Risposta #6 il: 16 Giu 2011, 20:38:47 »
se cerchi in qs sezione o sul mio sito c'è un tutorial per un componente googlemaps, che è poi + o - la stessa storia del tuo, cambia solo il js.
Tra componente e modulo diciamo che non c'è molta differenza... usa solo ciò che ti interessa.


M.

Offline zeus

  • Esploratore
  • **
  • Post: 71
  • Sesso: Maschio
  • Silly rabbit, trix are not for kids
    • Mostra profilo
Re:Centrare mappa su ip utente
« Risposta #7 il: 17 Giu 2011, 09:05:56 »
cmq per centrare una mappa devi dare questo comando
Codice: [Seleziona]
map.setCenter(new GLatLng(42.93230, 12.71118), 5);ovviamente latitudine e longitudine le devi ricavare con apposite funzioni di geodecoding....
basta googlare un pò....
http://code.google.com/intl/it-IT/apis/maps/documentation/javascript/services.html#Geocoding

Offline aston82

  • Esploratore
  • **
  • Post: 94
    • Mostra profilo
Re:Centrare mappa su ip utente
« Risposta #8 il: 17 Giu 2011, 09:41:40 »
Grazie ad entrambi, oggi faccio un po' di prove e vi faccio sapere se funziona!

ok, ho provato a inserire:
Codice: [Seleziona]
        google.loader.ClientLocation.latitude;
$centerPointLat = google.loader.ClientLocation.latitude;
google.loader.ClientLocation.longitude;
$centerPointLong = google.loader.ClientLocation.longitude;
echo "SobiCatOverMap.setCenter( new GLatLng( {$centerPointLat}, {$centerPointLong} ), {$mapsZoom} );";
mi da lo spazio della mappa grigio con il logo di Google.. se metto il codice dove dichiara i parametri del modulo mi ritorna la mappa come se non avessi modificato nulla. (@Zeus: nel modulo c'è già quel comando per centrare la mappa, devo capire come passargli gli indirizzi)

ho anche letto il link e visto la funzione per il geocoding dell'indirizzo suggerita da Zeus:
Codice: [Seleziona]
function codeAddress() {
    var address = document.getElementById("address").value;
    geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location
        });
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }


ma questo modulo è strutturato in maniera diversa e non riesco a venirne a capo.. scusate ma le storie sulle mappe non mi sono congeniali..  :(   
« Ultima modifica: 17 Giu 2011, 10:48:22 da aston82 »

mau_develop

  • Visitatore
Re:Centrare mappa su ip utente
« Risposta #9 il: 17 Giu 2011, 11:38:56 »
non conosco l'api in questione ma secondo me qs

google.loader.ClientLocation.latitude;

client->location->latitude è già una localizzazione

M.

Offline zeus

  • Esploratore
  • **
  • Post: 71
  • Sesso: Maschio
  • Silly rabbit, trix are not for kids
    • Mostra profilo
Re:Centrare mappa su ip utente
« Risposta #10 il: 17 Giu 2011, 11:54:17 »
ma magari è vuota e giustamente non sa cosa centrare....

che api di google maps stai usando??

Offline aston82

  • Esploratore
  • **
  • Post: 94
    • Mostra profilo
Re:Centrare mappa su ip utente
« Risposta #11 il: 17 Giu 2011, 12:18:23 »
ok allora, lasciamo perdere il discorso del centramento sull'indirizzo dell'utente che mi pare troppo per le mie corde per il momento, vediamo di venirne fuori con sto benedetto client:

come ho detto ho provato :
Citazione
google.loader.ClientLocation.latitude;
   $centerPointLat = google.loader.ClientLocation.latitude;
   google.loader.ClientLocation.longitude;
   $centerPointLong = google.loader.ClientLocation.longitude;
   $mapsZoom = "5";
   echo "SobiCatOverMap.setCenter( new GLatLng( {$centerPointLat}, {$centerPointLong} ), {$mapsZoom} );";
e mi restituisce la mappa tutta grigia..
ho provato a metterci valori fissi con $centerPointLat = "45.56";   e poi la mappa viene visualizzata bene per quelle cordinate.

quindi credo manchi qualcosa per far andare il google.loader.clientLocation.. mi puoi aiutare su questo? grazie ancora.


@zeus:
dovrebbe essere la 2


Offline aston82

  • Esploratore
  • **
  • Post: 94
    • Mostra profilo
Re:Centrare mappa su ip utente
« Risposta #13 il: 17 Giu 2011, 14:39:10 »
@zeus:

ho inserito questa funzione di test nel mio modulo, non da errori,ma restituisce il caso null:
Codice: [Seleziona]
<script src="http://www.google.com/jsapi" language="javascript"></script>
<script language="javascript">
if (google.loader.ClientLocation != null) {
document.write("Your Location Is: " + google.loader.ClientLocation.address.city + ", " + google.loader.ClientLocation.address.region);
} else {
document.write("Your Location Was Not Detected By Google Loader");
}
</script>
Citazione
If a location cannot be determined from the visitors IP address, the google.loader.ClientLocation variable will be null.
vuol dire che io ho qualche blocco che nega la lettura del mio IP??

Offline zeus

  • Esploratore
  • **
  • Post: 71
  • Sesso: Maschio
  • Silly rabbit, trix are not for kids
    • Mostra profilo
Re:Centrare mappa su ip utente
« Risposta #14 il: 17 Giu 2011, 15:22:40 »
non so che dirti, leggi bene la documentazione google...
non l'ho mai usato e non saprei come aiutarti...

mi viene un dubbio... non è che devi attivare il servizio Latitude (non riordo bene come si chiama)???

Offline aston82

  • Esploratore
  • **
  • Post: 94
    • Mostra profilo
Re:Centrare mappa su ip utente
« Risposta #15 il: 17 Giu 2011, 16:23:51 »
..si sto leggendo da giorni in tutto il web, solo mi dice sempre che il client non è leggibile o simili.. boh!
non riesco a trovare da nessuna parte qualcuno che abbia già fatto una cosa simile.. pazzesco.. :(


mau_develop

  • Visitatore
Re:Centrare mappa su ip utente
« Risposta #16 il: 17 Giu 2011, 17:04:09 »
ma la chiave l'hai messa?

M.

Offline aston82

  • Esploratore
  • **
  • Post: 94
    • Mostra profilo
Re:Centrare mappa su ip utente
« Risposta #17 il: 17 Giu 2011, 17:22:37 »
Codice: [Seleziona]
echo "<script src=\"{$baseAddresse}/maps?file=api&amp;v={$map_api_version}&amp;key={$config->googleMapsApiKey}\" type=\"text/javascript\"></script>";
nel modulo c'è già questo richiamo alla chiave, giusto no?

o ne serve una diversa per ogni script?

mau_develop

  • Visitatore
Re:Centrare mappa su ip utente
« Risposta #18 il: 17 Giu 2011, 17:30:43 »
 al massimo uno per api a cui ti colleghi, ... ma non saprei rispondere a questo

...leggevo sulla pagina dell'api e ho visto il warning
http://code.google.com/intl/it-IT/apis/loader/

M.

Offline zeus

  • Esploratore
  • **
  • Post: 71
  • Sesso: Maschio
  • Silly rabbit, trix are not for kids
    • Mostra profilo
Re:Centrare mappa su ip utente
« Risposta #19 il: 17 Giu 2011, 19:29:35 »
questi li hai già letti?
http://lab.abhinayrathore.com/ipmapper/ (questo sembra perfetto - anche se non funziona con la chiavetta tim - ovviamente)
http://www.doogal.co.uk/WhereAmI.php questo funziona ed èabbastanza preciso (sembra che devi copiarti il codice sorgente dall'html)

altre fonti:
http://stackoverflow.com/questions/1365722/center-google-map-based-on-geocoded-ip
http://web3o.blogspot.com/2011/06/ip-address-geocoding-api-for-google.html

di più nin sò  ;)

 



Web Design Bolzano Kreatif