我有三个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())但它没有按预期工作。简单地返回坐标也不起作用。
答案 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);
}