Javascript将值从外部函数传递到内部函数

时间:2018-03-20 15:47:17

标签: javascript function

我有三个javascript函数。 主要功能在我的index.html文件中的脚本标记内。 我还有两个名为cities.js的外部文件中的其他函数。

Beneath是脚本标记中的主要功能:

function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
center: coords,
mapTypeId: 'terrain'
}

这适用于Google Maps API。

接下来的两个函数保存地图的坐标。

function ldn() {
    var coords = var coords = {lat: 51.509865, lng: -0.118092};

}
function birm() {
    var coords = {lat: 52.509865, lng: -0.2};
}

基本上,我有一个下拉框,当点击'ldn'或'birm'时,外部文件中的函数将根据单击的那个执行。

我希望获取函数中的坐标并将它们包含在“center”变量的main函数中。

我希望这是有道理的!我试过在中心调用该函数(center:birm())但它没有按预期工作。简单地返回坐标也不起作用。

2 个答案:

答案 0 :(得分:0)

initMap只运行一次以初始化地图。

如果您想稍后根据您的选择重新定位,请使用

function ldn() {
    var coords = {lat: 51.509865, lng: -0.118092};
    map.setCenter(coords);

}
function birm() {
    var coords = {lat: 52.509865, lng: -0.2};
    map.setCenter(coords);
}

这假设map变量是全局的。

答案 1 :(得分:0)

如果您想通过单击按钮更改Map对象并且没有方法来执行此操作,则必须重新创建它。

使用以下代码,使用您的函数将地图初始化为新位置:

var defaultCoords = {
  lat: 52.509865,
  lng: -0.2
}

function initMap(coords) {
  map = new google.maps.Map(document.getElementById('map'), {
    zoom: 12,
    center: coords || defaultCoords,
    mapTypeId: 'terrain'
  });
}

function ldn() {
  var coords = {
    lat: 51.509865,
    lng: -0.118092
  };
  initMap(coords);
}

function birm() {
  var coords = {
    lat: 52.509865,
    lng: -0.2
  };
  initMap(coords);
}

但是如果有一种方法可以将新坐标(.setCenter())应用于地图,则必须将对象存储在initMap()之外:

var defaultCoords = {
  lat: 52.509865,
  lng: -0.2
}
var map;

function initMap() {
  map = new google.maps.Map(document.getElementById('map'), {
    zoom: 12,
    center: defaultCoords,
    mapTypeId: 'terrain'
  });
}

function ldn() {
  var coords = {
    lat: 51.509865,
    lng: -0.118092
  };
  map.setCenter(coords);
}

function birm() {
  var coords = {
    lat: 52.509865,
    lng: -0.2
  };
  map.setCenter(coords);
}