2013-07-04 93 views
1

我想在提交表单后重新初始化我的地图。我的表单有一个下拉菜单,下拉菜单用于选择将在地图中显示的区域。我想在表单提交时,页面仍在那里,但地图刷新并显示标记。对不起,我的英语不好。有代码:提交表单后google地图刷新

<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'][email protected]$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> 

<?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; 
     ?> 
+0

你需要的哑剧(经纬度:从[谷歌地图API(经纬度)https://developers.google.com/maps /documentation/javascript/3.exp/reference?hl=en#Map)? – vladkras

+0

你是什么意思?对不起,我还是新手。第一个代码用于选择将在地图中显示的latlong,该过程在第二个代码中执行,但是在该过程之后如何使地图显示标记?我想念那件事。 – Krichevskoy

+0

请粘贴你的html代码与这里选择这里 – vladkras

回答

1

首先,我不明白你为什么包括json.php在文件的结尾,也不会为阿贾克斯工作,因为你你评论了最后一行。我想你不需要使用self.location='index.php?cabang=' + val;重新加载此页面。只需发送使用$.ajax(你已经在你的代码),并与panTo()方法(描述here)成功更新地图json.php请求

这样的算法应该是:<select>平变化 - >reload - >val(你已经有的话) - >$.ajax - >json.php + data = val - >success: function(data) {} - >var newCoor = new google.maps.LatLng(data.x, data.y) - >Map.panTo(panTo(newCoor))

+0

非常感谢vladkras,json.php正在使用得到mark latlong的地图。 self.location ='index.php?cabang ='+ val; - >是组合框的ajax而不是地图。 的情况是: 1.开始时,地图是空的,没有标记,并且有一个组合框用于选择标记(latlong)。 2.提交组合框后,我想要地图刷新功能,并获得组合框的值。 3.所以地图现在将显示之前选择的标记。 – Krichevskoy

+0

对不起我的不好的基本,我可以理解你的算法..你能准确地告诉我,代码和我应该把它放在哪里。 – Krichevskoy

+0

我认为,我解决了这个问题..我使用不同的方法..另一种算法。谢谢你的一切。 – Krichevskoy