我试图从placeId获取某个地方的纬度和经度,但我不确定如何在地理编码功能中设置地理编码功能之上的变量。目前,函数中的console.log为我提供了有效的lat和long值,第二个console.log给了我0.00。如何设置从0.00开始的纬度和经度变量?
$("#search-filter-form").submit(function(event) {
// stop form from submitting normally
event.preventDefault();
//get latlong of area:
var geocoder = new google.maps.Geocoder();
var address = "new york";
var placeId = searchFilterViewModel.searchFilterAutoComplete.placeObject.placeId;
var latitude = 0.00;
var longitude = 0.00;
geocoder.geocode( { 'placeId': placeId}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
latitude = results[0].geometry.location.lat();
longitude = results[0].geometry.location.lng();
console.log(latitude, longitude);
}
});
console.log(latitude, longitude);
}
答案 0 :(得分:0)
而不是将匿名func传递给submit方法,而不是将其命名为。
然后你可以定义静态变量。
x = x + xmin;
y = y + ymin;
scatter(x,y)
现在您可以从任何地方访问var
function myfunction() {
myfunction.something = 123;
}
答案 1 :(得分:0)
虽然重复的答案和上面的答案也可能有效,但这就是我所做的:
将匿名回调函数转换为箭头回调函数,以便我可以使用"这个"关键字指向异步函数的父级,以便我设置父对象变量而不仅仅是函数变量:
var geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'placeId': this.placeObject.placeId}, (results, status) => {
if (status == google.maps.GeocoderStatus.OK) {
this.placeObject.latitude = results[0].geometry.location.lat();
this.placeObject.longitude = results[0].geometry.location.lng();
}
});