简体   繁体   中英

How do I add a user-input marker to Google Maps widget on my website, and get the latitude and longitude data from it?

How do I add a user-input marker to Google Maps widget on my website, and get the latitude and longitude data from it?

Right now I am building an application which has to allow users to drop a marker to any location so that I can get that data and process it.

   <script>
                var map;
                function initMap() {
                  map = new google.maps.Map(document.getElementById('map'), {
                    zoom: 2,
                    center: new google.maps.LatLng(2.8,-187.3),
                    mapTypeId: 'terrain'
                  });

                  // Create a <script> tag and set the USGS URL as the source.
                  var script = document.createElement('script');
                  // This example uses a local copy of the GeoJSON stored at
                  // http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.geojsonp
                  script.src = 'https://developers.google.com/maps/documentation/javascript/examples/json/earthquake_GeoJSONP.js';
                  document.getElementsByTagName('head')[0].appendChild(script);
                }

                // Loop through the results array and place a marker for each
                // set of coordinates.
                window.eqfeed_callback = function(results) {
                  for (var i = 0; i < results.features.length; i++) {
                    var coords = results.features[i].geometry.coordinates;
                    var latLng = new google.maps.LatLng(coords[1],coords[0]);
                    var marker = new google.maps.Marker({
                      position: latLng,
                      map: map
                    });
                  }
                }
              </script>

Right now I am using this, but this doesn't offer any user submitted markers.

Try running this working jsfiddle for demonstration and guidance on how users can place markers on a Google map. Note that it's based off of Google's example on adding and removing markers.

Full JS code below:

var map;
var markers = [];

function initMap() {
  var haightAshbury = {
    lat: 37.769,
    lng: -122.446
  };

  map = new google.maps.Map(document.getElementById('map'), {
    zoom: 12,
    center: haightAshbury,
    mapTypeId: 'terrain'
  });

  // This event listener will call addMarker() when the map is clicked.
  map.addListener('click', function(event) {
    addMarker(event.latLng);
  });

  // Adds a marker at the center of the map.
  addMarker(haightAshbury);
}

// Adds a marker to the map and push to the array.
function addMarker(location) {
  var marker = new google.maps.Marker({
    position: location,
    map: map
  });
  markers.push(marker);
}

You can get the marker's coordinates from the map's click event listener, eg:

  map.addListener('click', function(event) {
    console.log(event.latLng.lat());
    console.log(event.latLng.lng());
    addMarker(event.latLng);
  });

Or from the addMarker method:

function addMarker(location) {
  var marker = new google.maps.Marker({
    position: location,
    map: map
  });
  console.log(marker.getPosition().lat());
  console.log(marker.getPosition().lng());
  markers.push(marker);
}

Hope this helps!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM