Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

JavaScript, Google maps sa markiranjem lokacije

[es] :: Javascript i AJAX :: JavaScript, Google maps sa markiranjem lokacije

[ Pregleda: 1588 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

piri
H. Novi (cg)

Član broj: 71018
Poruke: 125
*.1641.crnagora.net.



+10 Profil

icon JavaScript, Google maps sa markiranjem lokacije11.03.2013. u 18:54 - pre 135 meseci
Pozdrav svima,

Radim sajt u PHP-u i MySQL za oglašavanje i izdavanje smještaja (hoteli, apartmani, sobe...) na kojem će registrovani korisnici sami popunjavati forme, uplodovati slike, ..., i na google maps-u markiranjem označiti lokaciju svojih apartmana/soba... Dakle kada popune formu, potrebno mi je da na mapi korisnik sam označi lokaciju i klikom na submit vrijednost longitude i latitude "pokupim" PHP-om .

Našao sam jasvascript kod na internetu koji pokušavam da modifikujem i prilagodim ovoj potrebi ali s obzirom da nemam nimalo iskustva sa javascriptom potpuno sam se pogubio u njemu. Evo koda:
Code:
<script type="text/javascript">

var map;
function initialize() {
  var myLatlng = new google.maps.LatLng(41,19.1);
  var mapOptions = {
    zoom: 13,
    center: myLatlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

  google.maps.event.addListener(map, 'click', function(event) {
    placeMarker(event.latLng);
  });
}
var marker;

function placeMarker(location) {
  if ( marker ) {
    marker.setPosition(location);

    // to display a tooltip:
    marker.setTitle("Hi");

// to get the geographical position:
    lat = 1;
    lng = 1;
    var pos = marker.getPosition();
    var lat = pos.lat();
    var lng = pos.lng();

  } else {
    marker = new google.maps.Marker({
      position: location,
      map: map
    });
  }
}
</script>

Ovaj kod prikazuje mapu na koju korisnik treba da locira svoju nekretninu i označi je markerom. Vizuelno to funkcioniše i markiranje radi samo ne mogu nikako da dobijem vrijednost širine i dužine iz markera koju bih kasnije "pokupio" PHP post metodom i sačuvao je u mysql bazi podataka. Ono što su mi rekli na jednom stranom forumu jeste da treba da u gornjem kodu unesem dva "hiden fields" i apdejtujem vrijednost u "map click event", ali ne znam kako to da uradim jer ne znam ništa o javascriptu.

Unaprijed hvala svima!




[Ovu poruku je menjao piri dana 11.03.2013. u 20:44 GMT+1]
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-11.sezampro.rs.



+33 Profil

icon Re: JavaScript, Google maps sa markiranjem lokacije13.03.2013. u 21:01 - pre 135 meseci
Nisam nikad koristio taj Google-ov JS lib za mape, ali evo da probam da pomognem na osnovu toga što si opisao...

Dakle u tvojoj formi, kao što ti je savetovano na tom forumu, najpre treba da dodaš neka dva skrivena polja, koja će služiti za prenos informacija o poziciji na mapi, npr.:
Code:
<input type="hidden" name="map_position[lat]" id="map-position-lat" />
<input type="hidden" name="map_position[lng]" id="map-position-lng" />

Taj "map click event" kojeg ti je neko takođe pomenuo na forumu je pretpostavljam taj placeMarker(location) callback, jer vidim da se on "kači" na click event - google.maps.event.addListener(map, 'click'). U tom callback-u bi te zanimao onaj deo nakon komentara "to get the geographical position:", tačnije vrednosti tih lat i lng varijabli koje se vade. Upis vrednosti te dve varijable u ona skrivena polja bi izgledao ovako nekako:
Code:
document.getElementById('map-position-lat').value = lat;
document.getElementById('map-position-lng').value = lng;

Ovaj snippet bi išao negde na kraj tog if-a, nakon dohvatanja lat/lng vrednosti. Na taj način bi kad neko označi lokaciju na mapi, tu poziciju (latitude, longitude) imao upisanu u okviru svoje forme, te bi ti ona bila dostupna nakon submit-a, u okviru $_POST['map_position'] niza. Kažem niza, jer sam nazive ta dva hidden polja napisao na način da će njihove vrednosti biti poslate u okviru map_position, pa ćeš imati $_POST['map_position']['lat'] i $_POST['map_position']['lng']. Uostalom, taj deo ti je valjda poznat. :)
 
Odgovor na temu

piri
H. Novi (cg)

Član broj: 71018
Poruke: 125
*.crnagora.net.



+10 Profil

icon Re: JavaScript, Google maps sa markiranjem lokacije23.03.2013. u 12:40 - pre 134 meseci
Prije svega hvala na odgovoru uz izvinjenje što nisam bio aktivan duže vrijeme zbog drugih obaveza koje sam imao.

Ja sam to, donekle, riješio nao ovaj način:

Code:
    <script type="text/javascript">
    
    var map;
    function initialize() {
      var myLatlng = new google.maps.LatLng(42.3,19.1);
      var mapOptions = {
        zoom: 8,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.HYBRID
      }
      map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
      google.maps.event.addListener(map, 'click', function(event) {
        placeMarker(event.latLng);
      });

    }
       var marker;
    
   function placeMarker(location) {
      if ( marker ) {
        var clickedLocation = new google.maps.LatLng(location);
        marker.setPosition(location);    
      } else {
        marker = new google.maps.Marker({
          position: location,
          map: map
        });
      }
    document.getElementById("lat").value = location.lat();
    document.getElementById("lon").value = location.lng();
    }
    window.onload = function(){initialize();};
    </script>


<div id="map_canvas" style="width:100%; height:330px"></div>
<p>
<table width="530" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="265" align="left">Geografska širina: <input type="text" name="lat" id="lat" class="lon_lat" value="<?php echo $_POST['lat']; ?>" /></td>
    <td width="265" align="right">Geografska dužina: <input type="text" name="lon" id="lon" class="lon_lat" value="<?php echo $_POST['lon']; ?>" /></td>
    </tr>
</table>


U ovom slučaju, kada se učita stranica, nema markera na mapi. Klikom na određenu lokaciju na mapi se pojavi marker, novim klikom na novoj lokaciji prethodni marker nestane i pojavi se novi na mjestu gdje je kliknuto. Kažem "donekle riješio" jer mi je potrebno da se marker pojavi i kad se stranica učita na lokaciji koja je definisana u promjenljivoj myLatlng a onda klikom na određenu lokaciju da nestane i da se pojavi na mjestu novog klika itd, svakim sledećim klikom nestane se prethodne lokacije i pojavi se na novoj.

Hvala još jednom!
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-11.sezampro.rs.



+33 Profil

icon Re: JavaScript, Google maps sa markiranjem lokacije24.03.2013. u 18:42 - pre 134 meseci
Aha, znači to je sad novi problem, pošto njega nisi opisao u uvodnoj poruci.

Primer za inicijalizaciju makera imaš upravo u tom placeMarker callback-u:
Code:
marker = new google.maps.Marker({
    position: location,
    map: map
});

Takvo neko parče koda bi trebalo da ide i u tom tvom initialize() metodu, nakon instanciranja mape. Pritom treba samo da proučiš u zvaničnoj dokumentaciji kako izgleda struktura tog position parametra, koji se prosleđuje kao opcija pri instanciranju Marker objekta, tj na koji način se on kreira. Konkretne vrednosti za njega (latitude/longitude) ćeš pretpostavljam dobavljati iz tih nekih skrivenih polja u okviru forme, nakon učitavanja stranice.

 
Odgovor na temu

piri
H. Novi (cg)

Član broj: 71018
Poruke: 125
*.crnagora.net.



+10 Profil

icon Re: JavaScript, Google maps sa markiranjem lokacije24.03.2013. u 20:57 - pre 134 meseci
To je to. Podatke latitude i longitude dobijam iz MySQL baze podataka jer se u ovom slučaju radi o edit stranici korisnika koje on, ukoliko to želi, može izmjeniti i apdejtovati bazu podataka.
Nisam koristio skrivena polja, odgovara mi i ovako. Nikola, veliko hvala!
Evo kompletan kod ako nekome zatreba.
Code:

<script type="text/javascript">
    
    var map;
    function initialize() {
      var myLatlng = new google.maps.LatLng(<?php echo $user_page_data['lat']; ?>,<?php echo $user_page_data['lng']; ?>);
      var mapOptions = {
        zoom: 8,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.HYBRID
      }
      map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
      google.maps.event.addListener(map, 'click', function(event) {
        placeMarker(event.latLng);
      });
    marker = new google.maps.Marker({
        position: myLatlng,
        map: map
    });

    }
       var marker;
    
   function placeMarker(location) {
      if ( marker ) {
        var clickedLocation = new google.maps.LatLng(location);
        marker.setPosition(location);    
      } else {
        marker = new google.maps.Marker({
          position: location,
          map: map
        });
      }
    document.getElementById("lat").value = location.lat();
    document.getElementById("lon").value = location.lng();
    }
    window.onload = function(){initialize();};
    </script>
<div id="map_canvas" style="width:100%; height:330px"></div>
<p>
<table width="530" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="265" align="left">Geografska širina: <input type="text" name="lat" id="lat" class="lon_lat" value="<?php echo $user_page_data['lat']; ?>" /></td>
    <td width="265" align="right">Geografska dužina: <input type="text" name="lon" id="lon" class="lon_lat" value="<?php echo $user_page_data['lng']; ?>" /></td>
    </tr>
</table>
</p>
 
Odgovor na temu

[es] :: Javascript i AJAX :: JavaScript, Google maps sa markiranjem lokacije

[ Pregleda: 1588 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.