Php 提交表单后谷歌地图刷新
我想在提交表单后重新初始化映射。我的表单有一个下拉菜单,该下拉菜单用于选择将在地图中显示的区域。我想在表单提交时,页面仍然在那里,但地图会刷新并显示标记。对不起,我的英语不好。代码如下:Php 提交表单后谷歌地图刷新,php,ajax,forms,google-maps,Php,Ajax,Forms,Google Maps,我想在提交表单后重新初始化映射。我的表单有一个下拉菜单,该下拉菜单用于选择将在地图中显示的区域。我想在表单提交时,页面仍然在那里,但地图会刷新并显示标记。对不起,我的英语不好。代码如下: <script type="text/javascript"> function initialize(){ var peta; var gambar_tanda; gam
<script type="text/javascript">
function initialize(){
var peta;
var gambar_tanda;
gambar_tanda = 'assets/images/enseval.jpg';
var x = new Array();
var y = new Array();
var customer_name = new Array();
// posisi default peta saat diload
var lokasibaru = new google.maps.LatLng(-6,107);
var petaoption = {
zoom: 6,
center: lokasibaru,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
peta = new google.maps.Map(document.getElementById("map_canvas"),petaoption);
var infowindow = new google.maps.InfoWindow({
content: '<div class=new>""</div>'
});
// memanggil function ambilpeta() untuk menampilkan koordinat
url = "json.php";
$.ajax({
url: url,
dataType: 'json',
cache: false,
success: function(msg){
for(i=0;i<msg.enseval.customer.length;i++){
x[i] = msg.enseval.customer[i].x;
y[i] = msg.enseval.customer[i].y;
customer_name[i] = msg.enseval.customer[i].nama_customer;
var point = new google.maps.LatLng(parseFloat(msg.enseval.customer[i].x),parseFloat(msg.enseval.customer[i].y));
tanda = new google.maps.Marker({
position: point,
map: peta,
icon: gambar_tanda,
clickable: true
});
bindInfoWindow(tanda, peta, infowindow, msg.enseval.customer[i].nama_customer);
}
}
});
}
google.maps.event.addDomListener(window, 'load', initialize);
function bindInfoWindow(tanda, peta, infowindow, data) {
google.maps.event.addListener(tanda, 'click', function() {
infowindow.setContent(data);
infowindow.open(peta, tanda);
});
}
function reload(form){
var val=form.org_id.options[form.org_id.options.selectedIndex].value;
self.location='index.php?cabang=' + val ;
}
</script>
</head>
<body>
<div id="map_canvas" style=" align: left; width:1000px; height:500px"></div>
<?php require ('config.php');
@$cabang=$_GET['cabang'];
/*if(strlen($cabang) > 0 and !is_numeric($cabang)){
echo "Data Error";
exit;
}*/
$quer2=pg_query("SELECT DISTINCT org_id FROM gis order by org_id");
if(isset($cabang) and strlen($cabang)){
$quer=pg_query("SELECT DISTINCT cp_rayon_name FROM gis where org_id=$cabang order by cp_rayon_name");
}
//else{$quer=pg_query("SELECT DISTINCT cp_rayon_name FROM gis order by cp_rayon_name"); }
echo "<form method=post name=f1 action='' onSubmit='\"initialize()\'>";
echo "<select name='org_id' onchange=\"reload(this.form)\"><option value=''>Select one</option>";
while($noticia2 = pg_fetch_array($quer2)) {
if($noticia2['org_id']==@$cabang){echo "<option selected value='$noticia2[org_id]'>$noticia2[org_id]</option>"."<BR>";}
else{echo "<option value='$noticia2[org_id]'>$noticia2[org_id]</option>";}
}
echo "</select>";
echo "<select name='rayon'><option value=''>Select one</option>";
while($noticia = pg_fetch_array($quer)) {
echo "<option value='$noticia[cp_rayon_name]'>$noticia[cp_rayon_name]</option>";
}
echo "</select>";
echo "<input type=submit value=Submit>";
echo "</form>";
include ('json.php');
?>
</body>
</html>
函数初始化(){
var-peta;
var gambar_tanda;
gambar_tanda='assets/images/enseval.jpg';
var x=新数组();
var y=新数组();
var customer_name=新数组();
//posisi默认peta saat卸载
var lokasibaru=新的google.maps.LatLng(-6107);
变量选项={
缩放:6,
中心:洛卡西巴鲁,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
peta=new google.maps.Map(document.getElementById(“Map_canvas”),peta选项);
var infowindow=new google.maps.infowindow({
内容:“”“”
});
//使用函数ambilpeta()实现协调
url=“json.php”;
$.ajax({
url:url,
数据类型:“json”,
cache:false,
成功:功能(msg){
对于(i=0;i首先,我不明白你为什么要在文件末尾包含json.php
,它对ajax也不起作用,因为你评论了最后一行。我想你不需要使用self.location='index.php?cabang='+val;
重新加载此页面。只需使用$.ajax
向json.php
发送请求即可(您的代码中已经有了它)并在成功时使用panTo()
method(description)更新映射
因此,算法应该是:
onchange->reload
->val
(您已经有了)->$.ajax
->json.php
+data=val
成功:函数(数据){/code>->var newCoor=new google.maps.LatLng(data.x,data.y)
Map.panTo(panTo(newCoor))
首先,我不明白你为什么要在文件末尾包含json.php
,它对ajax也不起作用,因为你评论了最后一行。我认为你不需要使用self.location='index.php?cabang='+val;
重新加载此页面。只需使用$.ajax>向json.php
发送一个请求即可代码>(您的代码中已经有了它),并且在成功时使用panTo()
方法更新映射(说明)
因此,算法应该是:
onchange->reload
->val
(您已经有了)->$.ajax
->json.php
+data=val
成功:函数(数据){/code>->var newCoor=new google.maps.LatLng(data.x,data.y)
Map.panTo(panTo(newCoor))
您需要来自的panTo(latLng:latLng)吗?什么意思?对不起,我还是新手。第一个代码用于选择将显示在地图中的latlong,该过程在第二个代码中进行,但如何使地图在处理后显示标记?我错过了这件事。请用此select Herdo粘贴您的html代码,您需要panTo吗(拉丁语:拉丁语)from?你是什么意思?对不起,我还是新手。第一个代码用于选择将在地图中显示的latlong,该过程在第二个代码中进行,但如何使地图在处理后显示标记?我错过了这件事。请将您的html代码与此选择粘贴在此处感谢vladkras,json.php用于获取标记latlonge map.self.location='index.php?cabang='+val;->是组合框的ajax,而不是映射的ajax。情况是:1.在开始时,映射为空,没有标记,并且有一个用于选择标记的组合框(latlong).2.提交combobox表单后,我希望地图刷新函数,并获取combobox的值。3.因此,现在的地图将显示以前选择的标记。对不起,我的基础不好,我可以理解你的算法。你能准确地告诉我,代码和我应该放在哪里。我想,我解决了这个问题。我使用不同的方法。另一种方法算法。感谢一切。非常感谢vladkras,json.php用于获取地图的标记latlong。self.location='index.php?cabang='+val;->是用于组合框的ajax,而不是用于地图。情况是:1.在开始时,地图是空的,没有标记,并且有一个用于选择标记(latlong)的组合框.2.提交combobox表单后,我希望地图刷新函数,并获取combobox的值。3.因此,现在的地图将显示以前选择的标记。对不起,我的基础不好,我可以理解你的算法。你能准确地告诉我,代码和我应该放在哪里。我想,我解决了这个问题。我使用不同的方法。另一种方法算法,谢谢你做的一切。
<?php
require ('config.php');
$rayon = $_POST['rayon'];
$cabang = $_POST['org_id'];
//echo "$rayon, $cabang";
$sql = "SELECT distinct org_id, customer_name, attribute16, attribute17 FROM gis where cp_rayon_name = '$RAYON'";
$data = pg_query($sql);
$json = '{"enseval": {';
$json .= '"customer":[ ';
while($x = pg_fetch_array($data)){
$json .= '{';
$json .= '"id_customer":"'.$x['org_id'].'",
"nama_customer":"'.htmlspecialchars($x['customer_name']).'",
"x":"'.$x['attribute17'].'",
"y":"'.$x['attribute16'].'"
},';
}
$json = substr($json,0,strlen($json)-1);
$json .= ']';
$json .= '}}';
//echo $json;
?>