2011-11-05 4 views
1

지도에서 아무 곳이나 클릭하면 새로운 마커가 만들어지고 다각형을 만듭니다 하지만 이제는 내 문제가 제대로 작동하지 않습니다. 데이터베이스에서 오는 내 마커가 있습니다. 다각형 안쪽에 있는지, 안다면?Google지도 api에서 다각형 안에 마커가 있는지 확인하는 방법

<?php include("config.php"); ?> 
<?php $result = mysql_query("select * from `googlemaps`"); ?> 
<html> 
<head> 
<title>Google Maps</title> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 
    var poly, map; 
    var markers = []; 
    var path = new google.maps.MVCArray; 

    function initialize() { 
    var LatLng = new google.maps.LatLng(23.183, 75.767); 

    map = new google.maps.Map(document.getElementById("map"), { 
     zoom: 12, 
     center: LatLng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 


    function createMarker(point, title) { 

     var infowindow = new google.maps.InfoWindow({ 
     content: "<span style='color:blue;'>"+title+"</span>" 
    }); 
     var marker = new google.maps.Marker({ 
      position: point, 
      map: map, 
      title:title 
     }); 

     marker.Image ='https://d3szoh0f46td6t.cloudfront.net/public/1626980/small'; 
    google.maps.event.addListener(marker, "click", function() { 
    infowindow.open(map,marker); 
     }); 
     return marker; 
    } 
<?php 
     if(mysql_num_rows($result)>0) 
     { 
      while($data = mysql_fetch_array($result)) 
     { ?> 
     createMarker(new google.maps.LatLng(<?php echo $data['lat']; ?>, <?php echo $data['lon']; ?>), "<?php echo $data['title']; ?>"); 

    <?php } 
     } 
?> 
    poly = new google.maps.Polygon({ 
     strokeWeight: 3, 
     fillColor: '#5555FF' 
    }); 
    poly.setMap(map); 
    poly.setPaths(new google.maps.MVCArray([path])); 

    google.maps.event.addListener(map, 'click', addPoint); 
    } 

    function addPoint(event) { 
    path.insertAt(path.length, event.latLng); 

    var marker = new google.maps.Marker({ 
     position: event.latLng, 
     map: map, 
     draggable: true 
    }); 

    markers.push(marker); 
    marker.setTitle("#" + path.length); 

    google.maps.event.addListener(marker, 'click', function() { 
     marker.setMap(null); 
     for (var i = 0, I = markers.length; i < I && markers[i] != marker; ++i); 
     markers.splice(i, 1); 
     path.removeAt(i); 
     } 
    ); 

    google.maps.event.addListener(marker, 'dragend', function() { 
     for (var i = 0, I = markers.length; i < I && markers[i] != marker; ++i); 
     path.setAt(i, marker.getPosition()); 
     document.getElementById("abc").innerHTML=path.setAt(i, marker.getPosition()); 
     } 
    ); 
    } 

</script> 
</head> 
<body style="margin:0px; padding:0px;" onLoad="initialize()"> 
    <div id="map" style="width:500px; height:500px;"></div> 
    <div id="abc"></div> 
</body> 
</html> 

답변

0

이 자바 스크립트 또는 PHP를 확인하는 방법을 묻는 중일 수 있습니다. 나는이 분야에서 GIS 틀을 인식하지 못하고있다.

대부분의 공간 데이터베이스 (예 : SQL Server/Postgresql)는 ST_Contains 또는 ST_Distance와 같은 기능을 제공합니다. 나는 이것이 OpenGIS 사양의 일부라고 생각한다.

아마 당신은 MYSQL을 사용하고있을 것 같습니다. 따라서 함수를 검색하면됩니다.

+0

JS Api 그래서 js에서 길을 찾아야합니다. –

+0

하지만 먼저 폴리곤의 모든 마커의 위도와 경도를 찾아야합니다. –

관련 문제