2012-04-02 3 views
1

Ich lade eine Karte und füge Markierungen aus einer Datenbank in die Leinwand ein. Wenn ich die Seite zum ersten Mal lade, wird die Funktion "load()" aufgerufen und ich weiß, dass die Eingabe "form" null ist, weil ich eine Warnung habe, wenn form = null ist. Wenn ich im Formularfeld auf "Suchen" drücke, wird die "load" -Funktion aufgerufen und ich weiß form! = Null, weil ich eine andere Warnung habe. Aber nachdem ich 'ok' für die andere Warnung gedrückt habe, kann ich sehen, dass die Ladung mit form = null erneut aufgerufen wird, da die entsprechende Warnung dann erscheint. HierKann mir jemand helfen, die Logik zu verstehen und sie zum Laden einer Karte zu korrigieren?

ist der Beginn der Ladefunktion im Kopf:

//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; 
} 

//]]> 

Hier sind die Felder, um die Karte zu laden und die Suchkriterien eingrenzen:

 <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> 

Wie kann ich meinen Code zu beheben so dass, wenn der Suchknopf gedrückt wird, die Ladefunktion einmal aufgerufen wird und die Information in dem Formular an die Ladefunktion übergeben wird?

+0

Warum haben Sie ein Body-Tag in einem Tabellen-Tag? – j08691

+0

erstens, ist das die echte Struktur? Bitte beachten Sie, dass die 'Tabelle' ein 'body'-Start-Tag enthält und nicht schließt. Fügen Sie bitte ein konstruierteres Code-Snippet ein. –

+0

Entschuldigung, versucht, nur das Wesentliche zu posten. Ich füge den Rest hinzu. – Stagleton

Antwort

1

Okay. Ich beschloss, eine Antwort zu schreiben, weil ich anfing, zu viele Kommentare zu erstellen.

Working example < < - verwenden Sie das, nicht den Kommentar eins. Cuz eine von Kommentar war meine lokale, vergaß, es irgendwo zu laden, und es wird weg sein, sobald ich PC ausschalte.

Je nachdem, was Sie in das Suchfeld eingeben, erhalten Sie nur Marker, die - auf die eine oder andere Weise - gesuchten Begriff/Wort enthalten. Versuchen „polen“ oder „Autobahn“

Der Teil mit PHP gemacht setzt:

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]'"); 

je Also, wenn Sie etwas setzen Feld zu suchen, Sie suchen und nehmen Markierungen aus der Datenbank, Die Spalte "search_crit" ist die gleiche wie das in die Suchbox geschriebene Wort. Und das ist so ziemlich alles. Wenn Sie möchten, können Sie es als eine Variable übergeben zu laden:

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

und es dann als einen Parameter in Funktion nutzen zu können Markierungen vergleichen verwenden. Wie gesagt, ich würde Ihre Ladefunktion benötigen, um zu wissen, wie Sie Marker erstellen und vergleichen.

Auch würde ichload(this.form) von onclick at button löschen, denn was auch immer es tut, ist es sofort weg mit Seite neu laden sowieso. Als Senden-Schaltfläche wird die Seite nach dem Drücken der Seite gesendet/neu geladen. Wenn Sie es nur für Prüfzwecke haben möchten, übergeben Sie etwas anderes als das ganze Formular. Nur Textfeld Wert zum Beispiel. Like here! (Schaltfläche geändert, um keine zu übermitteln, für die Anzeigezwecke)

Alles unklar? Willst du ganze Datei/Quellcode? Einfach unten kommentieren, ima die Antwort aktualisieren.

Quelldatei, wie * .txt gespeichert, so dass Sie den eigentlichen Code sehen: Source code (geändertene Login und Passwort bei der Verbindung Mysql-Datenbank, so dass ich zeigen werde nicht es zu ganzer Welt.)

+0

wow, danke für die Mühe. Wenn ich nach Hause komme, werde ich aktualisieren. – Stagleton

+0

Ich hoffe es wird helfen. Die zweite Möglichkeit besteht darin, immer alle Markierungen auf der Karte zu erstellen und dann einige mit Javascript zu filtern/auszublenden, ohne sie zu aktualisieren. Wie auch immer, haben Sie irgendwelche Fragen, fragen Sie einfach! – Kedor

+0

Ich habe oben weitere Informationen hinzugefügt. Gibt es eine Möglichkeit, "addMarkers()" aufzurufen, ohne die gesamte Seite neu zu laden, wenn der Submit-Button gedrückt wird? Ihr Beispiel funktioniert so, wie ich es möchte. Ich überprüfe es und versuche, meine Seite dazu zu bringen, genauso zu handeln – Stagleton

Verwandte Themen