如何让 "Hide/Show" 和 "add marker" 函数在 Google 映射中协同工作?
How do I get "Hide/Show" and "add marker" functions to work together in Google maps?
我正在尝试为我的家谱网站创建一个页面,其中包含一个 google 地图,其中有两个添加项:(i) 添加标记以显示与家庭相关的地点,以及 (ii) "hide/show" Google 的兴趣点标记。
通过复制和粘贴,我成功地使用一个组合脚本编写了一个 HTML 页面,该脚本在打开时仅显示 "add marker" 元素。如果我删除代码的 "add marker" 部分,我只会得到 "Hide/Show" 元素(如您所料)。他们永远不会同时出现在同一张地图上!
我强烈怀疑这与我复制了 "function initMap" 和 "var map" 命令有关,但如果我删除其中一对命令,我只会得到一个空白页。
我最近几天一直在搜索 google 地图 API 和互联网,但通常都没有成功,这让我发疯。
你们中的任何好人都可以分享您的知识并告诉我哪里出错了吗?您可能猜到了,这是我第一次尝试 Javascript!!
这个问题现在已经解决,工作代码现在显示在这里:-
<script>
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 7, center: { lat: 52.85, lng: 1.16 },
});
var styleControl = document.getElementById('style-selector-control'); map.controls[google.maps.ControlPosition.TOP_CENTER].push(styleControl);
document.getElementById('hide-poi').addEventListener('click', function () {
map.setOptions({ styles: styles['hide'] });
});
document.getElementById('show-poi').addEventListener('click', function () {
map.setOptions({ styles: styles['default'] });
});
var styles = {
default: null,
hide: [
{
featureType: 'poi',
stylers: [{visibility: 'off'}]
},
{
featureType: 'transit',
elementType: 'labels.icon',
stylers: [{visibility: 'off'}]
}
]
}
var marker = new google.maps.Marker({
position: {lat:52.05,lng:1.16},
map: map,
title: 'Hello World!'
});
}
</script>
只需在第一个 mapInit()
内添加标记,去掉第二个:
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: { lat: 53.82, lng: -4.74 },
});
var styleControl = document.getElementById('style-selector-control');
map.controls[google.maps.ControlPosition.TOP_CENTER].push(styleControl);
document.getElementById('hide-poi').addEventListener('click', function () {
map.setOptions({ styles: styles['hide'] });
});
document.getElementById('show-poi').addEventListener('click', function () {
map.setOptions({ styles: styles['default'] });
});
var marker = new google.maps.Marker({
position: { lat: 53.82, lng: -4.74 },
map: map,
title: 'Hello World!'
});
}
我正在尝试为我的家谱网站创建一个页面,其中包含一个 google 地图,其中有两个添加项:(i) 添加标记以显示与家庭相关的地点,以及 (ii) "hide/show" Google 的兴趣点标记。 通过复制和粘贴,我成功地使用一个组合脚本编写了一个 HTML 页面,该脚本在打开时仅显示 "add marker" 元素。如果我删除代码的 "add marker" 部分,我只会得到 "Hide/Show" 元素(如您所料)。他们永远不会同时出现在同一张地图上! 我强烈怀疑这与我复制了 "function initMap" 和 "var map" 命令有关,但如果我删除其中一对命令,我只会得到一个空白页。 我最近几天一直在搜索 google 地图 API 和互联网,但通常都没有成功,这让我发疯。 你们中的任何好人都可以分享您的知识并告诉我哪里出错了吗?您可能猜到了,这是我第一次尝试 Javascript!! 这个问题现在已经解决,工作代码现在显示在这里:-
<script>
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 7, center: { lat: 52.85, lng: 1.16 },
});
var styleControl = document.getElementById('style-selector-control'); map.controls[google.maps.ControlPosition.TOP_CENTER].push(styleControl);
document.getElementById('hide-poi').addEventListener('click', function () {
map.setOptions({ styles: styles['hide'] });
});
document.getElementById('show-poi').addEventListener('click', function () {
map.setOptions({ styles: styles['default'] });
});
var styles = {
default: null,
hide: [
{
featureType: 'poi',
stylers: [{visibility: 'off'}]
},
{
featureType: 'transit',
elementType: 'labels.icon',
stylers: [{visibility: 'off'}]
}
]
}
var marker = new google.maps.Marker({
position: {lat:52.05,lng:1.16},
map: map,
title: 'Hello World!'
});
}
</script>
只需在第一个 mapInit()
内添加标记,去掉第二个:
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: { lat: 53.82, lng: -4.74 },
});
var styleControl = document.getElementById('style-selector-control');
map.controls[google.maps.ControlPosition.TOP_CENTER].push(styleControl);
document.getElementById('hide-poi').addEventListener('click', function () {
map.setOptions({ styles: styles['hide'] });
});
document.getElementById('show-poi').addEventListener('click', function () {
map.setOptions({ styles: styles['default'] });
});
var marker = new google.maps.Marker({
position: { lat: 53.82, lng: -4.74 },
map: map,
title: 'Hello World!'
});
}