gpt4 book ai didi

Javascript/Google Charts - 将标记过滤器添加到谷歌地图

转载 作者:行者123 更新时间:2023-12-03 06:59:31 25 4
gpt4 key购买 nike

我正在尝试制作一张 map ,该 map 将根据所选的下拉选项填充位置标记。我在这里找到了一个半工作的 jsfiddle

http://jsfiddle.net/kamelkid2/drytwvL8/77/

基本上,最终结果是用户可以选择是否想要查看最适合年龄段的 Playground 和/或带有婴儿秋千的 Playground 。生成的标记将填充在 map 上

我可以让第一个标记过滤器正常工作

<div id="map-canvas"></div>
<select id="type" onchange="filterMarkers(this.value);">
<option value="">BEST FOR (SHOW ALL)</option>
<option value="BABIES">BEST FOR BABIES</option>
<option value="TODDLERS">BEST FOR TODDLERS</option>
<option value="KIDS">BEST FOR KIDS</option>
<option value="ALL">BEST FOR ALL</option>
</select>

这是过滤器

filterMarkers = function (category) {
for (i = 0; i < markers1.length; i++) {
marker = gmarkers1[i];
// If is same category or category not picked
if (marker.category == category || category.length === 0) {
marker.setVisible(true);
}
// Categories don't match
else {
marker.setVisible(false);
}
}
}

但是,在我尝试过的多次尝试中,第二个标记过滤器将不起作用。是否可以过滤掉 2 个下拉列表,或者我应该尝试其他策略吗?

链接的 jsfiddle 几乎是我最好的尝试,但我还不太擅长 javascript,所以我希望为我妻子的妈妈小组的一个小项目获得一些指导

最佳答案

你忘记了两件事:

1.您忘记将 categorybs 添加到标记,您只添加了 category:

marker1 = new google.maps.Marker({
title: title,
position: pos,
category: category,
categorybs: categorybs, //add this line
map: map
});

2.您的filterMarkersBS函数使用category而不是categorybs。您需要像这样更新它:

filterMarkersBS = function (categorybs) {
for (i = 0; i < markers1.length; i++) {
marker = gmarkers1[i];
// If is same category or category not picked
if (marker.categorybs == categorybs || categorybs.length === 0) {
marker.setVisible(true);
}
// Categories don't match
else {
marker.setVisible(false);
}
}
}

工作代码:

var gmarkers1 = [];
var markers1 = [];
var infowindow = new google.maps.InfoWindow({
content: ''
});

// Our markers
markers1 = [
['0', 'Cascade Park - 130 Lynn Dr, Hudson, OH 44236', 41.234830, -81.453479, 'KIDS', 'BSNO'],
['1', 'Hudson Springs Park - 7095 Stow Rd, Hudson, OH 44236', 41.250798, -81.407120, 'BABIES', 'BSYES'],
['2', 'Middleton Park - 1708 Middleton Rd, Hudson, OH 44236', 41.268963, -81.450649, 'ALL', 'BSNO']
];

/**
* Function to init map
*/

function initialize() {
var center = new google.maps.LatLng(41.234830, -81.453479);
var mapOptions = {
zoom: 12,
center: center,
mapTypeId: google.maps.MapTypeId.TERRAIN
};

map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
for (i = 0; i < markers1.length; i++) {
addMarker(markers1[i]);
}
}

/**
* Function to add marker to map
*/

function addMarker(marker) {
var category = marker[4];
var categorybs = marker[5];
var title = marker[1];
var pos = new google.maps.LatLng(marker[2], marker[3]);
var content = marker[1];

marker1 = new google.maps.Marker({
title: title,
position: pos,
category: category,
categorybs: categorybs,
map: map
});

gmarkers1.push(marker1);

// Marker click listener
google.maps.event.addListener(marker1, 'click', (function (marker1, content) {
return function () {
console.log('Gmarker 1 gets pushed');
infowindow.setContent(content);
infowindow.open(map, marker1);
map.panTo(this.getPosition());
}
})(marker1, content));
}

/**
* Function to filter markers by category
*/

filterMarkers = function (category) {
for (i = 0; i < markers1.length; i++) {
marker = gmarkers1[i];
// If is same category or category not picked
if (marker.category == category || category.length === 0) {
marker.setVisible(true);
}
// Categories don't match
else {
marker.setVisible(false);
}
}
}

filterMarkersBS = function (categorybs) {
for (i = 0; i < markers1.length; i++) {
marker = gmarkers1[i];
// If is same category or category not picked
if (marker.categorybs == categorybs || categorybs.length === 0) {
marker.setVisible(true);
}
// Categories don't match
else {
marker.setVisible(false);
}
}
}

// Init map
initialize();
#map-canvas {
width: 500px;
height: 500px;
}
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("maps", "3",{other_params:"sensor=false"});
</script>
<div id="map-canvas"></div>
<select id="type" onchange="filterMarkers(this.value);">
<option value="">BEST FOR (SHOW ALL)</option>
<option value="BABIES">BEST FOR BABIES</option>
<option value="TODDLERS">BEST FOR TODDLERS</option>
<option value="KIDS">BEST FOR KIDS</option>
<option value="ALL">BEST FOR ALL</option>
</select>
<br>
<select id="type" onchange="filterMarkersBS(this.value);">
<option value="">BABY SWINGS (SHOW ALL)</option>
<option value="BSYES">HAS BABY SWINGS</option>
<option value="BSNO">DOES NOT HAVE BABY SWINGS</option>
</select>

关于Javascript/Google Charts - 将标记过滤器添加到谷歌地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37122243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com