0

円内のマーカー位置を検出しようとしています。データベースから取得したマーカーの緯度と経度。なんとかマーカーの位置を検出できました。ただし、アラートは最後のマーカーからのみ発生します。マーカー/サークルごとにアラートを表示するにはどうすればよいですか?

スクリーンショット:スクリーンショット

詳細については、こちらを参照してください:リンク

マーカーを各円にドラッグしてみてください。

事前に感謝し、私の下手な英語で申し訳ありません:)

コード:

    <script type="text/javascript">
function init_terminal() {
  var mapOptions = { center: new google.maps.LatLng(-6.832858,107.953184), zoom: 10,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      scaleControl: true
      };
    map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

var dragable_marker = new google.maps.Marker({
    position : new google.maps.LatLng(-6.832858,107.953184),
    map : map,
    draggable : true
});
<?php 
        $link=koneksi_db();
        $sql="select f.*,j.*,ka.*,ke.*,i.*, a.meter from fasum f, jenis_fasum j, kategori_fasum ka, kecamatan ke, instansi i, aturan_jarak a WHERE f.id_jenis=j.id_jenis AND j.id_kategori=ka.id_kategori AND f.id_instansi=i.id_instansi AND f.id_kecamatan=ke.id_kecamatan AND j.id_jenis=a.id_jenis AND f.id_jenis=7"; 
        $res=mysql_query($sql,$link); 
            $i=0;
            while($data=mysql_fetch_array($res)){
                $i++; 
          ?>
var image = '../icon/<?php echo $data['icon'];?>';
var marker = new google.maps.Marker({
  position: new google.maps.LatLng(<?php echo $data['lat'];?>, <?php echo $data['lng'];?>),
  map: map,
  icon: image
});

var circle = new google.maps.Circle({
    center : new google.maps.LatLng(<?php echo $data['lat'];?>,<?php echo $data['lng'];?>),
    radius : <?php echo $data['meter'];?>,
    fillColor: "#00ff00",
    fillOpacity : .3,
    strokeOpacity : .4,
    map : map
});
google.maps.event.addListener( dragable_marker, 'dragend', function( e ) {
    if (circle.getBounds(this.center).contains(dragable_marker.getPosition() ) ){
    document.getElementById("latbox").value = null;
    document.getElementById("lngbox").value = null;
    alert("Inside!");
    }
    else {
    document.getElementById("latbox").value = this.getPosition().lat();
    document.getElementById("lngbox").value = this.getPosition().lng();
    }
});
<?php }?>
var kmlOptions = {preserveViewport: 1};
<?php 
        $res2=mysql_query("SELECT * FROM poligon");
        while($poli=mysql_fetch_array($res2)){
        ?>
    layersemua = new google.maps.KmlLayer('<?php echo $poli['url'];?>', kmlOptions);
    layersemua.setMap(map,this);
    document.getElementById('lihatsemua').checked = true; 
    <?php }?>
}

    </script>
4

1 に答える 1

0

両方の円を検出するには、それらに一意の名前 (circle1、circle2) を付けるか、関数クロージャーを使用してリスナーを円に関連付けます。

于 2012-07-27T10:29:12.130 に答える