Как передать параметры в функцию перед вызовом - PullRequest
0 голосов
/ 12 сентября 2018

Я создаю страницу, на которой люди могут щелкать по различным ссылкам, и она будет передавать широту / долготу данных в функцию инициализации API Карт Google, но я не могу понять, как передать параметры в функцию.

Я нашел похожий вопрос с ответом, в котором предлагалось использовать 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>

1 Ответ

0 голосов
/ 12 сентября 2018

вам не нужно связываться, просто убедитесь, что ваш callback доступен по всему миру.

var lat = parseFloat($(this).attr('data-lat')),
    lng = parseFloat($(this).attr('data-lng'));

window.gmapsInit = function(){
    initMap(lat, lng)();
}
 $('.result').append( //...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...