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.
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());
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
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.
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;
}
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,
};
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>