我想知道如何更改此Leaflet代码的内容,
<script id="pdis">
window.onload = function () {
var map = L.map('map').setView([-26.40894, -54.67430], 18);
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
L.marker([-26.40893, -54.67438]).addTo(map)
.bindPopup("<b>eldorado punto de interes</b><br/> tu chichachicha.").openPopup();
L.marker([-26.40896, -54.67403]).addTo(map)
.bindPopup("<b>Eldo punto 1</b><br />I am a popup.").openPopup();
};
</script>
我试图在搜索后更新那些L.markers,比如
<?php
include 'conexion.php';
$q=$_POST[q];
$con=conexion();
$sql="select * from pdi where name LIKE '".$q."%'";
$res=mysql_query($sql,$con);
if(mysql_num_rows($res)==0){
echo '<b>No hay sugerencias</b>';
}else{
echo '<b>Sugerencias:</b><br/>';
while($fila=mysql_fetch_array($res)){
echo '<img src="logo/'.$fila['id'].'.jpg"></img><br><em>'.$fila['cat'].'</em><br><b>'.$fila['name'].'</b><br>'.$fila['dir'].'<br><a href="msite/'.$fila['id'].'.html" target="_blank">Más...</a>';
}
}
?>
首先,我不知道是否必须使用JQuery&#39; text()
或html()
。
答案 0 :(得分:0)
因此,我解释您的问题的方式是,您希望使用搜索返回的坐标更新传单地图上的标记。
为此,您应该更改当前代码,将标记存储在可访问的变量中。像
这样的东西var markerA = L.marker([-26.40893, -54.67438]).addTo(map);
var markerB = L.marker([-26.40896, -54.67403]).addTo(map);
然后,您可以使用
更改标记的坐标markerA.setLatLng([newLat, newLong]) ;
需要在ajax调用中通过php脚本返回 newLat
和newLong
。这个JavaScript看起来像
$.ajax({
url: 'search.php',
data: {q: search_query},
success: function(data){
// update a single marker with the first set of returned coordinates
markerA.setLatLng([data[0].lat, data[0].long]) ;
},
dataType: 'json'
});
并且php文件search.php
看起来像(从您的示例中更改)
<?php
include 'conexion.php';
$q=$_GET[q];
$con=conexion();
$sql="select * from pdi where name LIKE '".$q."%'";
$res=mysql_query($sql,$con);
$result = array();
while($fila=mysql_fetch_array($res)){
// append lat long coords to result array
$result[] = array('lat' => $fila['lat'], 'long' => $fila['long']);
}
echo json_encode($result);
?>
如果我在任何地方都发生了语法错误,请道歉 - 这应该是概述而不是实际代码。