How do you click on a map and have latitude and longitude fields in a form populated?

23,954

Solution 1

Using the Google Maps API, you can do this pretty easily. Just add a click event handler to your map object, which passes in the latitude/longitude coordinates of where the user clicked (see details on the click event here).

function initMap()
{
    // do map object creation and initialization here
    // ...

    // add a click event handler to the map object
    GEvent.addListener(map, "click", function(overlay, latLng)
    {
        // display the lat/lng in your form's lat/lng fields
        document.getElementById("latFld").value = latLng.lat();
        document.getElementById("lngFld").value = latLng.lng();
    });
}

Solution 2

The code is for google map api version 3. v2 has been depreciated so better to stick with v3.

Have a div with id mapdiv in which the map is loaded

Use an input element with id latlng to display the lat and lng when you click on the map. so that people can copy that value into another application. you can modify the opts variable according to your need.

Add an event handler for click event like in the code. So that when you click on the map the input element is populated with lat and lng values.

var map;
function mapa()
{
    var opts = {'center': new google.maps.LatLng(26.12295, -80.17122), 'zoom':11, 'mapTypeId': google.maps.MapTypeId.ROADMAP }
    map = new google.maps.Map(document.getElementById('mapdiv'),opts);

    google.maps.event.addListener(map,'click',function(event) {
        document.getElementById('latlng').value = event.latLng.lat() + ', ' + event.latLng.lng()
    })      
}

The above is all that you need.


if you want to see the values of lat and lng when you move the mouse over the map then add a mouse move event listener like in the following code. you can use a span or even an input element to see the values. I had used span in my code.

google.maps.event.addListener(map,'mousemove',function(event) {
    document.getElementById('latspan').innerHTML = event.latLng.lat()
    document.getElementById('lngspan').innerHTML = event.latLng.lng()
});
Share:
23,954
Joe
Author by

Joe

Updated on October 22, 2020

Comments

  • Joe
    Joe over 3 years

    I have a form that a user needs to fill out where the location needs to be identified. I have latitude and longitude input fields on the form. I am also looking for the decimal lat and long. What I would like seems really simple. I just want to have a link that the user can click on that would popup a map (google or yahoo) and he could use the map to find the location and just click on it and that would automatically populate the two input fields for lat and long from the map. Has anyone done this before?

  • Joe
    Joe over 14 years
    Thanks for the link, i'm going to check it out.