我正在创建一个页面,人们可以在其中单击各种链接,它会将纬度/经度数据传递到 Google map API 初始化函数中,但我不知道如何将参数传递到函数中。
我发现了一个类似的问题,其答案建议使用 Function.prototype.bind()
在调用之前将参数传递到回调中,但我不确定我是否理解它是如何工作的,因为目前我得到 gmapsInit is not a function
这是我的代码:
function initMap(lat, lng) {
return function() {
var loc = {lat: lat, lng: lng};
console.log(loc);
var panorama = new google.maps.StreetViewPanorama(
document.getElementById('map'), {
position: loc,
pov: {
heading: 10,
pitch: 10
},
linksControl: false,
panControl: false,
streetViewControl: false,
motionTracking: true
});
map.setStreetView(panorama);
}
}
$(function() {
$('div').click(function() {
var lat = parseFloat($(this).attr('data-lat')),
lng = parseFloat($(this).attr('data-lng'));
// Here's what I tried
var gmapsInit = initMap.bind(null, lat, lng);
$('.result').append('<div id="map"></div><script async defer src="https://maps.googleapis.com/maps/api/js?key=MYAPIKEY&callback=gmapsInit"></script>');
});
});
<div data-lat="48.8584" data-lng="2.2945">
<div class="result"></div>
最佳答案
您不需要绑定(bind),只需确保您的回调
全局可用。
var lat = parseFloat($(this).attr('data-lat')),
lng = parseFloat($(this).attr('data-lng'));
window.gmapsInit = function(){
initMap(lat, lng)();
}
$('.result').append( //...
关于javascript - 如何在调用函数之前将参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52300445/