我正在使用谷歌地图地理编码从地址获取纬度,经度值。这是我的代码,
@Override
public int hashCode() {
return this.name.hashCode()
}
在函数外部访问变量<template>
...
</template>
<script>
export default {
name: 'animated-page',
watch: {
'$route' (to, from) {
// conditionally choose animations depending on route
const toDepth = to.path.split('/').length
const fromDepth = from.path.split('/').length
this.transitionName = toDepth < fromDepth ? 'slide-right' : 'slide-left'
}
}
}
</script>
<style>
... my animations
</style>
时,其值似乎为<template>
...
</template>
<script>
export default {
// somehow inherit from BasePage
name: 'about-page',
... 'about' specific code
}
</script>
<style>
</style>
。上面的代码有什么问题?
UPDATE1:
var latd;
var lond;
geocoder.geocode({ 'address': address }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
console.log(place);
var latd = results[0].geometry.location.lat();
var lond = results[0].geometry.location.lng();
}
console.log(latd);
});
//console.log(latd);
答案 0 :(得分:1)
首先,因为您尝试访问条件的变量只能在上下文中访问。您重新声明的变量if是新变量。
if (status == google.maps.GeocoderStatus.OK) {
console.log(place);
var latd = results[0].geometry.location.lat();
var lond = results[0].geometry.location.lng();
console.log(latd, lond)
}
你可以改变:
var latd;
var lond;
geocoder.geocode({ 'address': address }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
console.log(place);
latd = results[0].geometry.location.lat();
lond = results[0].geometry.location.lng();
}
console.log(latd);
});
<强>更新强>
geocoder.geocode
是一个异步函数。你必须等到它完成。
即使地理编码器尚未完成执行,执行geocoder.geocod
后的变量也是如此。因此,您的变量始终未定义,因为您创建了一个具有未定义值的变量。
注意:您的所有操作都应该放入地理编码器的回调函数中,否则,它将始终未定义。
答案 1 :(得分:1)
如果你想要访问lat,那么在函数外面很长时间只需分配它们,不要在里面创建它们。您可以阅读有关JavaScript Scope
的更多信息 var latd;
var lond;
geocoder.geocode({ 'address': address }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
console.log(place);
latd = results[0].geometry.location.lat();
lond = results[0].geometry.location.lng();
}
console.log(latd);
});
//console.log(latd);