Javascript 谷歌地图获取地点id
我想把经纬度的地点id写在Javascript 谷歌地图获取地点id,javascript,google-maps,Javascript,Google Maps,我想把经纬度的地点id写在#latlng上的#send点击。 html在这里 <input id="latlng" class="controls" type="text"><input id="place_input" class="controls" type="text"><input type="button" id="send" value="send"> <div id="map_div"> &l
#latlng
上的#send
点击。
html在这里
<input id="latlng" class="controls" type="text"><input id="place_input" class="controls" type="text"><input type="button" id="send" value="send">
<div id="map_div">
<input id="pac-input" class="controls" type="text" placeholder="Search Box">
<div id="map"></div>
</div>
javascript就在这里
function initAutocomplete() {
var lat = {lat: 20.593684, lng: 78.96288000000004};
var markers = [];
var map = new google.maps.Map(document.getElementById('map'), {
center: lat,
zoom: 3,
mapTypeId: google.maps.MapTypeId.ROADMAP,
disableDefaultUI: true,
zoomControl: true,
scaleControl: true
});
var geocoder = new google.maps.Geocoder;
var infowindow = new google.maps.InfoWindow;
var input = document.getElementById('pac-input');
var searchBox = new google.maps.places.SearchBox(input);
map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);
map.addListener('bounds_changed', function() {
searchBox.setBounds(map.getBounds());
});
searchBox.addListener('places_changed', function() {
var places = searchBox.getPlaces();
if (places.length == 0) {
return;
}
// Clear out the old markers.
markers.forEach(function(marker) {
marker.setMap(null);
});
markers = [];
// For each place, get the icon, name and location.
var bounds = new google.maps.LatLngBounds();
places.forEach(function(place) {
var marker = new google.maps.Marker({
map: map,
title: place.name,
position: place.geometry.location,
draggable:true
});
// Create a marker for each place.
markers.push(marker);
document.getElementById("place_input").value = place.geometry.location;
google.maps.event.addListener(marker, 'click', function (marker) {
document.getElementById("latlng").value = this.getPosition().lat() + ', ' + this.getPosition().lng() ;
});
if (place.geometry.viewport) {
// Only geocodes have viewport.
bounds.union(place.geometry.viewport);
} else {
bounds.extend(place.geometry.location);
}
});
map.fitBounds(bounds);
});
google.maps.event.addListener(map, 'click', function(event) {
addMarker(event.latLng, map);
});
function setMapOnAll(map) {
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(map);
}
}
function addMarker(location, map) {
if(markers.length == 0){
var marker = new google.maps.Marker({
position: location,
map: map,
animation: google.maps.Animation.DROP,
draggable:true
});
markers.push(marker);
google.maps.event.addListener(marker, 'click', function (marker) {
document.getElementById("latlng").value = this.getPosition().lat() + ', ' + this.getPosition().lng() ;
});
}else{
var marker = new google.maps.Marker({
position: location,
map: map,
animation: google.maps.Animation.DROP,
draggable:true
});
setMapOnAll(null);
markers = [];
markers.push(marker);
google.maps.event.addListener(marker, 'click', function (marker) {
document.getElementById("latlng").value = this.getPosition().lat() + ', ' + this.getPosition().lng() ;
});
}
}
var placename ;
function geocodeLatLng(geocoder, map, infowindow) {
var input = document.getElementById('latlng').value;
var latlngStr = input.split(',', 2);
var latlng = {lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1])};
geocoder.geocode({'location': latlng}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
if (results[1]) {
map.setZoom(11);
var marker = new google.maps.Marker({
position: latlng,
map: map
});
infowindow.setContent(results[1].formatted_address);
infowindow.open(map, marker);
placename = results[1].formatted_address;
document.getElementById("place_input").value = placename;
} else {
window.alert('No results found');
}
} else {
window.alert('Geocoder failed due to: ' + status);
}
});
}
function codeAddress(geocoder,map,infowindow) {
var input = document.getElementById('latlng').value;
var latlngStr = input.split(',', 2);
var latitude = parseFloat(latlngStr[0]);
var longitude = parseFloat(latlngStr[1]);
var latlng = {lat: latitude, lng: longitude};
geocoder.geocode({'location': latlng}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
if (results[1]) {
console.log(results[1].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[1].geometry.location
});
console.log(results[1].place_id);
} else {
window.alert('No results found');
}
} else {
window.alert('Geocoder failed due to: ' + status);
}
});
}
document.getElementById('send').addEventListener('click', function() {
/*geocodeLatLng(geocoder, map, infowindow);*/
codeAddress(geocoder,map,infowindow);
});
}
函数initAutocomplete(){
var lat={lat:20.593684,lng:78.96288004};
var标记=[];
var map=new google.maps.map(document.getElementById('map'){
中心:拉丁美洲,
缩放:3,
mapTypeId:google.maps.mapTypeId.ROADMAP,
disableDefaultUI:true,
动物控制:对,
scaleControl:对
});
var geocoder=new google.maps.geocoder;
var infowindow=new google.maps.infowindow;
var input=document.getElementById('pac-input');
var searchBox=newgoogle.maps.places.searchBox(输入);
map.controls[google.maps.ControlPosition.TOP_LEFT].push(输入);
addListener('bounds_changed',function(){
searchBox.setBounds(map.getBounds());
});
searchBox.addListener('places\u changed',function(){
var places=searchBox.getPlaces();
如果(places.length==0){
返回;
}
//清除旧的标记。
markers.forEach(函数(marker){
marker.setMap(空);
});
标记=[];
//对于每个位置,获取图标、名称和位置。
var bounds=new google.maps.LatLngBounds();
地点。forEach(功能(地点){
var marker=new google.maps.marker({
地图:地图,
标题:place.name,
位置:place.geometry.location,
德拉格布尔:是的
});
//为每个地方创建一个标记。
标记器。推(标记器);
document.getElementById(“place_input”).value=place.geometry.location;
google.maps.event.addListener(标记,'click',函数(标记){
document.getElementById(“latlng”).value=this.getPosition().lat()+,“+this.getPosition().lng();
});
if(place.geometry.viewport){
//只有地理代码具有视口。
联合(place.geometry.viewport);
}否则{
扩展(place.geometry.location);
}
});
映射边界(bounds);
});
google.maps.event.addListener(映射,'click',函数(事件){
addMarker(event.latLng,map);
});
函数setMapOnAll(映射){
对于(var i=0;i
此代码不起作用。它给出了错误的地点id。我将它与谷歌地图地点id查找器匹配。
需要快速帮助。任何帮助都将不胜感激 这只是一个猜测,但我认为在地理编码函数中作为响应对象返回的数组对于每个搜索都有多个结果。您似乎正在调用索引为1的响应对象的第二个最近匹配项。尝试:
if (results[0]) {
console.log(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
console.log(results[0].place_id);
为什么你认为这个地方的id是错的?普莱克