2012-04-02 3 views
1

지도를로드하고 데이터베이스의 마커를 캔버스에 추가합니다. 내가 처음 페이지를로드 할 때 "load()"함수가 호출되고 case form = null에 경고가 있기 때문에 'form'입력이 null이라는 것을 알고 있습니다. 양식 필드에서 "search"를 누르면 "load"함수가 호출되고 다른 경고가 있기 때문에 form! = null을 알고 있습니다. 그러나 다른 경고에 대해 'ok'를 누르면 해당 경고가 팝업되어 form = null로 다시로드된다는 것을 알 수 있습니다. 나는 내 코드를 수정하려면 어떻게누군가가 논리를 이해하고지도를로드하는 데 도움이 될 수 있습니까?

 <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="2" ALIGN="Center" WIDTH=80%> 
     <body onload="load()" onunload="GUnload()"> 
     <TR> 
     <TD> 
      <div id="map" style="width: 1250px; height: 750px"></div> 
     </TD> 
     <TD> 

      <form method="post"> 
      <input type="text" name="search_criteria" id="search_criteria" /> 
      <!--button to modify search criteria--> 
      <button type="submit" id="narrow_search_form" name="narrow_search_form" onClick = "addMarkers()">Search</button> 
      </form> 
      </body> 
      </TD> 
      </TR> 
     </TABLE> 

: 여기

//Edit (adding more information for clarity) 
//<![CDATA[ 
var map; 
function load(form) { 
    if (form != null) { 
     alert("Form not null!"); 
    } else { 
     alert("Form is null :-("); 
    } 


    var myOptions = { 
     center: new google.maps.LatLng(42, -70), 
     zoom: 3, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("map"),myOptions); 
    // rest is edited out 
} 

function addMarkers() { 
//************MAP WILL NOT GENERATE WITH THIS SECTION OR ADD MARKERS************* 
      microAjax("genjsonphp.php?stdt="+costlow+"&enddt="+costhigh, function(data) { 
       var json = JSON.parse(data); 
       var points = json; 

      for (var i = 0; i<points.length; i++) 
       { 
       var point = points[i]; 
       var latlng = new google.maps.LatLng(parseFloat(point.LocationLat)/1000000,parseFloat(point.LocationLon)/1000000); 
        var marker = createMarker(point.House, 
         point.Place, 
         point.Cost, 
         latlng, 
         map); 
       } 
     }); 
//************************************************************************************ 
    } 


function createMarker(House, Place, Cost, latlng, mapsent) 
{ 
    var marker = new google.maps.Marker({ 
         position: latlng, 
         map: mapsent, 
         title: House 
         }); 
     marker.info = new google.maps.InfoWindow({ 
     content: House + '<br />' + Place + '<br />' + Cost 
    }); 

    google.maps.event.addListener(marker, 'click', function(){ 
     marker.info.open(mapsent, marker); 
    }); 
    return marker; 
} 

//]]> 

지도를로드하고 검색 기준을 좁힐 수있는 필드입니다 : 여기

머리의 하중 함수의 시작입니다 검색 버튼을 누르면로드 함수가 한 번 호출되고 폼의 정보는로드 함수로 전달됩니다.

+0

왜 테이블 태그 안에 body 태그가 있습니까? – j08691

+0

먼저 이것이 실제 구조입니까? 'table'은'body' 시작 태그를 포함하고 닫히지 않습니다. 좀 더 구성된 코드 스 니펫을 붙여 넣으십시오. –

+0

죄송합니다. 필수 항목 만 게시하려고했습니다. 나는 나머지를 더할 것이다. – Stagleton

답변

1

오케이. 나는 너무 많은 의견을 내기 시작했기 때문에 대답을 쓰기로 결심했다.

< < - 주석이 아닌 하나를 사용하십시오. 덧글에서 한 사촌 하나는 내 로컬 하나, 그것을 어딘가에 업로드 잊어 버린, 그리고 일단 내가 PC를 해제 사라질 것입니다.

검색 상자의 내용에 따라 검색된 용어 나 단어가 포함 된 마커 만 표시됩니다. 는 그 부분이 PHP로 만든 "고속도로"

또는 "폴란드"를 넣어보십시오 :

if($_POST['search_criteria'] == "" || !isset($_POST['search_criteria'])) $result = mysql_query("SELECT lat, lng, search_crit, something_else from markers"); 
else $result = mysql_query("SELECT lat, lng, search_crit, something_else from markers where search_crit = '$_POST[search_criteria]'"); 

그래서 당신은 상자를 검색 할 물건을 올려 경우, 당신은 검색 걸릴 따라 "search_crit"열은 검색 창에 쓰여진 단어와 동일합니다.. 그리고 그것은 거의 모든 것입니다.

load('<? echo $_POST["search_criteria"]; ?>') 

을 한 다음 마커를 비교하기 위해 사용하는 몇 가지 매개 변수로 함수에서 사용 : 당신이 원하는 경우에, 당신은로드 할 변수로 전달할 수 있습니다. 내가 말했듯이, 당신의 마커를 어떻게 만들고 있는지를 알기 위해로드 기능이 필요합니다.

또한, 나는 버튼에 onclick을에서load(this.form)을 삭제, 무엇 때문에 그것이 수행의 바로 페이지를 다시로드와 사라 어쨌든 것입니다. submit 버튼은 누른 후에 페이지를 submit/reload 할 것입니다. 확인 목적으로 만 사용하려는 경우은 전체 양식 이외의 다른 기능을 전달합니다. 예를 들어 텍스트 상자 값. Like here! (버튼을 제출하지 않았으므로 표시 목적으로)

불명확 한 점이 있습니까? 전체 파일/소스 코드를 원하십니까? 아래에 댓글을 달아주세요. 답변을 업데이트하십시오. MySQL 데이터베이스를 연결하는 그래서 전 세계에 보여 실 거예요 때 Source code (변경된 로그인과 암호 : 당신이 실제 코드를 볼 수 있도록 .txt 인 *로 저장

소스 파일.)

+0

와우, 노력해 주셔서 감사합니다. 내가 집에 갈 때 나는 새 단장 할 것이다. – Stagleton

+0

도움이되기를 바랍니다. 두 번째 방법은지도에서 항상 모든 마커를 만든 다음 새로 고치지 않고 javascript로 일부 필터/숨기기를하는 것입니다. 어쨌든, 질문이 있으시면 물어보십시오! – Kedor

+0

위의 정보를 추가했습니다. 제출 버튼을 누르면 전체 페이지를 다시로드하지 않고 "addMarkers()"를 호출 할 수 있습니까? 당신의 본보기는 내가 원하는대로 작동합니다. 나는 그것을 체크 아웃하고 내 페이지가 같은 방식으로 행동하게하려고 노력하고있다. – Stagleton

관련 문제