Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript and Jquery: Adding markers for Google Maps when clicking a button

I'm trying to create a button that will add a marker to an existing google maps that is displayed.

function initialize()
{
    geocoder = new google.maps.Geocoder();
    codeAddress();
}



function codeAddress()
{
    var image_icon = 'http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png';
    var address = document.getElementById("type_location").value;

    geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {

            var mapOptions = {
            zoom: 11,
            center: results[0].geometry.location,
            mapTypeId: google.maps.MapTypeId.ROADMAP
            }

        map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

            var marker = new google.maps.Marker({
                map: map,
                position: results[0].geometry.location,
                icon: image_icon
            });

        }           

    });

}

I'm fairly new and I was hoping someone can help me.

If I have something like this to display my maps:

$(document).ready(function() {  

var coord = $(".address").attr("data-coordinates"); //this displays lat,lng (example: 32.000,-118.000)

var geocoder;
var map;    
initialize();
$(".add_marker").click(function(){

    // this is where I should add a marker?
});

});
like image 473
hellomello Avatar asked Nov 07 '12 07:11

hellomello


2 Answers

HTML for map

<div id="map" style="width:100%;height:500px" ></div>

javascript for loading map and marker

function myMap() {
    var myCenter = new google.maps.LatLng(28.214461283939166,83.95801313236007);
    var map_Canvas = document.getElementById("map");
    var mapOptions = {center: myCenter, zoom: 14,mapTypeId:google.maps.MapTypeId.HYBRID};
    var map = new google.maps.Map(document.getElementById("map"), mapOptions);
    google.maps.event.addListener(map, 'click', function(event) {
        document.getElementById("latitude").value = map.getCenter().lat(); 
        document.getElementById("longitude").value = map.getCenter().lng(); 
      place_Marker(map, event.latLng);

    });

  }
  var marker;
  function place_Marker(map, location) {
      if(marker){
          marker.setPosition(location);
      }else{
      marker = new google.maps.Marker({
      draggable:true,
      position: location,
      animation: google.maps.Animation.DROP,
      map: map
    });
  }

    var infowindow = new google.maps.InfoWindow({
      content: 'Latitude: ' + location.lat() + '<br>Longitude: ' + location.lng()
    });

    infowindow.open(map,marker);

  }
like image 95
Ganesh Pandey Avatar answered Nov 15 '22 20:11

Ganesh Pandey


lucky you!

i have a working example that does exactly what you want :)

see the full code and test it here: http://jsfiddle.net/RASG/vA4eQ/
just click the button "add marker"

here is the relevant code:

var latlng = new google.maps.LatLng(42.745334, 12.738430);

function addmarker(latilongi) {
    var marker = new google.maps.Marker({
        position: latilongi,
        title: 'new marker',
        draggable: true,
        map: map
    });
    map.setCenter(marker.getPosition())
}

$('#btnaddmarker').on('click', function() {
    addmarker(latlng)
})
like image 21
RASG Avatar answered Nov 15 '22 22:11

RASG