在字符串中组合变量,反向地理编码-javascript
我试图找回“用户”点击我在我的网站上实现的“谷歌地图”时的地址 我复制了源代码表单并进行了视图修改。在谷歌的源代码中,您通过输入字段获得“latlng”。我通过一个“事件”得到它 在我的“地理编码函数”中,我将我的“lat”和“lng”参数相加,得出它们从输入字段中出来时的样子 代码如下:在字符串中组合变量,反向地理编码-javascript,javascript,google-maps,Javascript,Google Maps,我试图找回“用户”点击我在我的网站上实现的“谷歌地图”时的地址 我复制了源代码表单并进行了视图修改。在谷歌的源代码中,您通过输入字段获得“latlng”。我通过一个“事件”得到它 在我的“地理编码函数”中,我将我的“lat”和“lng”参数相加,得出它们从输入字段中出来时的样子 代码如下: // Set variables var clicklat; var clicklng; var geocoder = new google.maps.Geocoder(); var
// Set variables
var clicklat;
var clicklng;
var geocoder = new google.maps.Geocoder();
var infowindow = new google.maps.InfoWindow;
// Listen for click on map
google.maps.event.addListener(map, 'click', function(event) {
placeMarker(event.latLng);
clicklat = parseFloat(event.latLng.lat());
clicklng = parseFloat(event.latLng.lng());
geocodeLatLng(geocoder, map, infowindow);
});
// Geocode function
function geocodeLatLng(geocoder, map, infowindow) {
var input = "#{clicklat},#{clicklng}"
var latlngStr = input.split(',', 2);
var latlng = {lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1])};
geocoder.geocode({'location': latlng}, function(results, status) {
if (status === '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);
} else {
window.alert('No results found');
}
} else {
window.alert('Geocoder failed due to: ' + status);
}
});
}
现在,我遇到的问题是
console.log(输入)代码>返回:{clicklat},{clicklng}
。为什么,见鬼,我的变量没有在那里实现 看起来你想用一块“翡翠”却没用
无论如何,这里有一种方法可以让它发挥作用:
// Set variables
//var clicklat;
//var clicklng;
var geocoder = new google.maps.Geocoder();
var infowindow = new google.maps.InfoWindow;
// Listen for click on map
google.maps.event.addListener(map, 'click', function(event) {
placeMarker(event.latLng);
//clicklat = parseFloat(event.latLng.lat());
//clicklng = parseFloat(event.latLng.lng());
geocodeLatLng(geocoder, map, infowindow, event.latLng); //I add this as a parameter
});
// Geocode function
function geocodeLatLng(geocoder, map, infowindow, thelocation) {
// var input = "#{clicklat},#{clicklng}"
// var latlngStr = input.split(',', 2);
// var latlng = {lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1])};
geocoder.geocode({'location': thelocation}, function(results, status) {
if (status === 'OK') {
if (results[1]) {
map.setZoom(11);
var marker = new google.maps.Marker({
position: results[1].geometry.location,
map: map
});
infowindow.setContent(results[1].formatted_address);
infowindow.open(map, marker);
} else {
window.alert('No results found');
}
} else {
window.alert('Geocoder failed due to: ' + status);
}
});
}
谢谢你,工作很有魅力。现在只剩下一个小问题了。当我现在点击地图时,标记和地址信息会转到下一个“村庄”或更大的“城市”,标记不会停留在确切的“点击点”,而是从那里返回完整的地址。我认为这与“位置:结果[1]。几何体。位置”有关-你知道我必须在那里放什么吗对不起。。我相信我是个该死的初学者,因为您使用的是第二个结果..或结果[1],请尝试对第一个结果使用索引0,因此只需将所有结果[1]替换为结果[0],然后让我知道没有任何更改。这是我上传的演示:怎么了?我正在巴塞罗那尝试,一切看起来都很好……你的欲望行为到底是什么?@betofarnia-我还有一个问题。我尝试在“map.setZoom(11);”之后使用“map.setCenter(results[0].geometry.location.latlng);”将地图居中。你有什么建议吗?谢谢你-我也没有用“.latlng”就试过了,但没用