我是编码的新手,正在玩谷歌地图。我在html窗口中设置了我的地图,并且我有一个不同poi的旋转木马,我已将其硬编码到地图中。我希望poi标记根据旋转木马中可见的位置进行更改。我已经能够检索活动轮播项目(this.item),但无法从该函数中获取变量。我感谢任何帮助。
navigator.geolocation.getCurrentPosition(function(position) {
this.pos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
this.item = $('#this-carousel-id .carousel-inner .item.active').attr("data-id");
markerCurrentPosition = new google.maps.Marker({
map: map,
position: pos,
icon: currentPositionIcon,
});
map.setCenter(pos);
}, function() {
handleNoGeolocation(true);
});
// watch for user's current position
watchId = navigator.geolocation.watchPosition(updateUserPosition);
} else {
// Browser doesn't support Geolocation
handleNoGeolocation(false);
}
答案 0 :(得分:0)
要从函数中取出变量,必须影响函数范围之外的变量......例如:
var t = {};
function test() {
t["out"] = 1;
}
function test2() {
console.log(t["out"]);
}
test2();
test();
test2();
函数test
影响对象t
内的变量。然后函数test2
可以读取out
中存储的内容。在您的情况下,变量可以存储在其他功能可访问的其他位置。实现这一目标的最简单方法是将变量存储在window
变量中。但强烈建议不要这样做,因为它可以被任何其他函数/脚本覆盖。
由于您是javascript的新手,您应该阅读有关异步函数的更多信息。
答案 1 :(得分:0)
this.item
不是变量。 this
是一个对象,item
是对象中属性的键。使用语法时:
this.item = something;
您要将key:value
对(属性)分配到this
对象,其值为something
。
如果您将对象视为字符串,它将如下所示:
{"item":"something"}
要在函数外部使用值,可以创建全局对象,并将值放在全局对象中。
var objGlobalForValues = {}; //Create a global object available globally
navigator.geolocation.getCurrentPosition(function(position) {
.... Deleted to minimize code
var myInfo = $('#this-carousel-id .carousel-inner .item.active').attr("data-id");
objGlobalForValues['myPropertyName'] = myInfo;
.... Deleted to minimize code
}
有关JavaScript对象的信息,请参阅此文档: