How to get latitude and longitude from google maps v3 api?

前端 未结 6 698
孤街浪徒
孤街浪徒 2021-02-04 08:40

I am trying create a map using google maps v3 api. I have found the below code over internet and I want to show the latitude and logitude in map window instead of address.

相关标签:
6条回答
  • 2021-02-04 09:14

    Where you have

      var address = '';
      if (place.address_components) {
        address = [
          (place.address_components[0] && place.address_components[0].short_name || ''),
          (place.address_components[1] && place.address_components[1].short_name || ''),
          (place.address_components[2] && place.address_components[2].short_name || '')
        ].join(' ');
      }
    
      infowindow.setContent('<div><strong>' + place.name + '</strong><br>' + address);
      infowindow.open(map, marker);
    

    Change the infowindow line to read

      infowindow.setContent('<div><strong>' + place.name + '</strong><br>' + place.geometry.location.lat() + ',' + place.geometry.location.lng());
    
    0 讨论(0)
  • 2021-02-04 09:19

    Much simpler solution will be :

    var address = "New Delhi"
    $.ajax({
      url:"http://maps.googleapis.com/maps/api/geocode/json?address="+address+"&sensor=false",
      type: "POST",
      success:function(res){
         console.log(res.results[0].geometry.location.lat);
         console.log(res.results[0].geometry.location.lng);
      }
    });
    

    Cheers

    0 讨论(0)
  • 2021-02-04 09:19

    When you want the lat and long of any part of the map,try adding the click listeners for the map not the marker. The code should be something like below:

    var infowindow = new google.maps.InfoWindow();
        var service = new google.maps.places.PlacesService(map);
    
        service.getDetails({
            placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4'
        },function(place,status){
            if(status === google.maps.places.PlacesServiceStatus.OK)
            {
                var marker = new google.maps.Marker({
                    map:map,
                    position: place.geometry.location
    
                });
    
            google.maps.event.addListener(map, 'click', function(e) {
              infowindow.setContent('<div>'+'Longitute'+'<strong>' + e.latLng.lng() + '</strong><br>' +
                'Latitude:'+'<strong>' + e.latLng.lat()+'</strong>'  + '</div>');
              infowindow.open(map, this);
            });
            }
        });
    

    This will display the lat and long of any location on the map using a info window.

    0 讨论(0)
  • 2021-02-04 09:20

    Looks like you might be looking for just regular geolocation stuff? Here's my snippett from a project to grab a user's lat/long

    trigger show_user_location(); to begin the geolocation API.

    function show_user_location(){ 
    
        navigator.geolocation.getCurrentPosition(display_user_location, error_response); 
    } 
    function display_user_location(user_position){ 
        var lat = user_position.coords.latitude; 
        var lon = user_position.coords.longitude; 
    
    // once we get here make that AJAX query
    // #loc.value="<p>Your latitude is: "+lat+", your longitude is: "+lon+"</p>"+ "<p><a href='http://maps.google.com/?q="+lat+","+lon+"'>View your location on Google Maps</a></p>";
    
        // I often put the lat/lon in a hidden form for later retrieval here.
        // value = document.getElementById('lat').value;
        // value = document.getElementById('lat').value;
    
        document.getElementById("lat").value = lat;
        document.getElementById("long").value = lon;
    
    } 
    
    0 讨论(0)
  • 2021-02-04 09:37

    I created a tiny component to illustrate with React. Although, it's the same API. I thought this might be helpful.

    import React, { useState } from 'react';
    
    import PropTypes from 'prop-types';
    import { GoogleApiWrapper } from 'google-maps-react';
    
    const SearchLocation = ({ google }) => {
      const [inputData, setInputData] = useState('');
    
      const handleChange = ({ target: { value } }) => {
        if (value) {
          setInputData(value);
          const autoCompleteService = new google.maps.places.AutocompleteService();
          autoCompleteService.getPlacePredictions(
            { input: value },
            (predictions, status) => {
               if (status === google.maps.places.PlacesServiceStatus.OK) {
                  // update prediction, so that user can click on the predicted address
                  const updatePredictions = (predictions) => {};
                  // or get the coordinate of one prediction
                  if (predictions.length > 0) {
                     geoCodeLocation(predictions[0]);
                  }
               }
            }
          );
        }
      };
    
      const geoCodeLocation = (suggestion) => {
        const placeId = suggestion.place_id;
        const GeoCoder = new google.maps.Geocoder();
        GeoCoder.geocode({ placeId }, (response) => {
          const lattitude = response[0].geometry.location.lat();
          const longitude = response[0].geometry.location.lng();
          const coordinates = [longitude, lattitude];
          // save coordinate and suggestion
          const selectLocation = ({ coordinates, suggestion }) => {};
        });
      };
    
      return (
        <div>
            <input
              type="text"
              name="searchLocation"
              placeholder="Enter your address..."
              className="text-field"
              onChange={handleChange}
            />
          {/* handle suggestion */}
       </div>
      );
    };
    
    export default GoogleApiWrapper({
      apiKey: process.env.GOOGLE_API_KEY,
      v: '3'
    })(SearchLocation);
    
    SearchLocation.defaultProps = {};
    
    SearchLocation.propTypes = {
      google: PropTypes.shape({}).isRequired,
    };
    
    0 讨论(0)
  • 2021-02-04 09:39

    Take a look at this code..

    <!DOCTYPE html>
    <html>
    <head>
        <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places"></script>
        <script>
            function initialize() {
            var address = 'Kolkata';
                geocoder = new google.maps.Geocoder();
                geocoder.geocode({
                'address': address
                }, function(results, status) {      
                    var lat=document.getElementById("lat").innerHTML=results[0].geometry.location.lat();    
                    var lng=document.getElementById("lng").innerHTML=results[0].geometry.location.lng();        
                });
            }
            google.maps.event.addDomListener(window, 'load', initialize);
        </script>
    </head>
    <body>
        <p id="lat"></p> 
        <p id="lng"></p> 
    </body>
    </html>
    
    0 讨论(0)
提交回复
热议问题