мне нужна ваша помощь в следующем:Фильтрация Маркеры Google Maps API V3
В настоящее время у меня есть набор данных в электронной таблице Google Maps. Мне нужно отфильтровать эти данные. Например, категория и тип.
Они собраны с помощью JSON:
/**
* Called when JSON is loaded. Creates sidebar if param_sideBar is true.
* Sorts rows if param_rankColumn is valid column. Iterates through worksheet rows,
* creating marker and sidebar entries for each row.
* @param {JSON} json Worksheet feed
*/
function cm_loadMapJSON(json) {
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < json.feed.entry.length; i++) {
var entry = json.feed.entry[i];
if(entry["gsx$" + param_latColumn]) {
var lat = parseFloat(entry["gsx$" + param_latColumn].$t);
var lng = parseFloat(entry["gsx$" + param_lngColumn].$t);
var point = new google.maps.LatLng(lat,lng);
var html = "<div class='infoscherm' style='font-size:12px'>";
html += "<h2>" + entry["gsx$"+param_titleColumn].$t
+ "</h2>";
var label = entry["gsx$"+param_titleColumn].$t;
if(entry["gsx$" + param_screenCategory]) {
html += "<h3>" + "Screen Category/Purpose: " + "</h3>" + "<p>" + entry["gsx$"+param_screenCategory].$t + "</p>";
}
var screentype = entry["gsx$"+param_screenType].$t;
if(entry["gsx$" + param_screenType]) {
html += "<h3>" + "Screen Type: " + "</h3>" + "<p>" + entry["gsx$"+param_screenType].$t + "</p>";
}
if(entry["gsx$" + param_publicSpace]) {
html += "<h3>" + "Type of Public Space: " + "</h3>" + "<p>" + entry["gsx$"+param_publicSpace].$t + "</p>";
}
var space = entry["gsx$"+param_publicSpace].$t;
if(entry["gsx$" + param_screenInteraction]) {
html += "<h3>" + "Type of interaction: " + "</h3>" + "<p>" + entry["gsx$"+param_screenInteraction].$t + "</p>";
}
if(entry["gsx$" + param_descriptionColumn]) {
html += "<h3>" + "Description: " + "</h3>" + "<p>" + entry["gsx$"+param_descriptionColumn].$t + "</p>";
}
if(entry["gsx$" + param_screenAddress]) {
html += "<h3>" + "Screen Location: " + "</h3>" + "<p>" + entry["gsx$"+param_screenAddress].$t + "</p>";
}
html += "</div>";
// create the marker
var marker = cm_createMarker(kaart,point,label,html,screentype,space);
// cm_map.addOverlay(marker);
cm_mapMarkers.push(marker);
cm_mapHTMLS.push(html);
bounds.extend(point);
}
}
kaart.fitBounds(bounds);
kaart.setCenter(bounds.getCenter());
}
Теперь я хочу, чтобы иметь возможность фильтровать маркеры, расположенные в массиве. Таким образом показаны только маркеры, устанавливающие фильтры.
Эта функция удаляет все маркеры с карты. Я думал о модификации этой функции, чтобы создать хороший рабочий динамический фильтр для маркеров. Но я не могу понять это. Любая помощь? Или идеи, возможно, даже другие лучшие способы работы?
function clearOverlays() {
if (cm_mapMarkers) {
for (i in cm_mapMarkers) {
cm_mapMarkers[i].setMap(null);
}
}
}
Thanx Заранее
Я не уверен, что вы имеете в виду , Если не ошибаюсь, маркеры и их значения в настоящее время находятся в массиве. Что мне нужно, например, когда флажок с одной из категорий активен, только эти маркеры категорий показаны. когда проверяется 2 категории, отображаются эти маркеры категории 2. Но кроме категории есть также screentype, это также будет добавлено. Например, 2 категории проверены, проверен ли creentype led. то должны отображаться только эти маркеры. Прошу прощения за непонимание вашего ответа. Кодирование не является моим самым сильным моментом :( – Emrulez
Вам нужно преобразовать свой «массив маркеров» в «массив элементов, содержащих информацию», где информация - это 3 свойства: «сам маркер», «категория» и «screentype» в соответствии с вашим комментарием. –
Я сделал следующее: я заменил cm_mapMarkers.push (маркер), с cm_mapMarkers.push ({point: marker, space: 'Park'}) и добавил функцию showSome к коду. Я запускаю fucntion в событии click но ничего не происходит :( – Emrulez