Я пытаюсь отфильтровать свои маркеры на основе описания (столбца) из моей базы данных оракула. Я создал запрос (filter.py), который был отправлен в ajax как json, чтобы позволить пользователям выбирать один или несколько типов описания (например, Rock, Knoll и т. Д.) С помощью кнопки отправки, позволяющей использовать фильтр. Запрос был отправлен в ajax, но я не знаю, как это сделать в jquery, поэтому, если пользователь установит флажок на основе описания породы, он получит маркеры, которые описаны как камни, и он также может получить маркеры описать как knoll и т. д. Я использую библиотеку js листовки .. Я действительно новичок в jquery
<div class="btn-group">
<input type="button"class="btn btn-default" id="allmarkers">Submit</input>
<input type="checkbox" id="Rock">Rock</input>
<input type='checkbox' id= "Knoll">Knoll</input>
</div>
var map = L.map('map').setView([51.505, -0.09], 13);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a
href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
//generate marker cluster
// var myRenderer = L.canvas({ padding: 5 });
var markers= L.markerClusterGroup({
});
{% for item in markers %}
//create map icons from database (this calls marker from a python query created using jnja2 template)
var marker{{ item[0] }} = L.marker({{ item[3:] }})
markers.addLayer(marker{{ item[0] }});
map.addLayer(markers)
{% endfor %}
Queries to filter(filter.py) (sent to ajax)
#!/usr/bin/env python3
import cgi
import cgitb
import sys
import json
import cx_Oracle
cgitb.enable()
from jinja2 import Environment, FileSystemLoader
fs = cgi.FieldStorage()
desc=[]
if 'description' in fs:
desc=fs['description'].value
def getMarkers():
conn = cx_Oracle.connect(dsn="geosgen", user="s4346", password=pw)
c = conn.cursor()
query = "SELECT A.PLACENAME_ID, A.DESCRIPTION, A.LATITUDE, A.LONGITUDE FROM PLACENAMES A"
if len(desc)>0:
query = query +getDescriptionQuery()
c.execute(query)
markers = []
for row in c:
markers.append([row[0],row[1],row[2],row[3]])
conn.close
return markers
def getDescriptionQuery():
query=''
for index, element in enumerate(desc):
if index==0:
query=query + "WHERE A.DESCRIPTION = '"+ desc[index] +"' "
else:
query=query + "OR A.DESCRIPTION = '"+ desc[index] +"' "
return query
markers=getMarkers()
result= {'data': markers}
sys.stdout.write("Content-Type: application/json")
sys.stdout.write("\n")
sys.stdout.write("\n")
sys.stdout.write(json.dumps(result,indent=1))
sys.stdout.write("\n")
sys.stdout.close()
AJAX CALL
$("#allmarkers").click(function (evt) {
$.ajax({
url: "/~s1774346/cgi-bin/filter.py",
async: true,
type: "post",
datatype:"json",
data: {'description': ['Rock', 'Knoll'] },
//data: "",
success: function(response) {
var dataArr = response.data
console.log(response.data)
//NOT SURE ABOUT HOW TO DO THE FILTERIING FROM HERE
$("#Rock").on('change', function(event){
if (this.checked){
for (var i = 0; i < dataArr.length; i++) {
console.log(dataArr[0])
if (description[0]== "Rock"){
}else {
}
}
}
});
}
});
});