Использование переменной PHP в JavaScript для Google Maps V2 - PullRequest
4 голосов
/ 05 марта 2012

Я в настоящее время на Google Map версии 2 (извините, я использую старую версию, и, пожалуйста, не предлагайте мне использовать V3, потому что это наше требование).По сути, эта страница должна позволять пользователю добавлять место и выбирать тип этого места (например, ресторан, бар, школа и т. Д.).Эта информация будет добавлена ​​в базу данных и будет использоваться для переключения.Добавление места работает сейчас и требует перенаправления на другую страницу php (testmap.php), чтобы на нем отображались маркеры на карте.Но для переключения нужна информация из типа, выбранного в раскрывающемся списке.Моя проблема в том, что я не знаю, как «связать» тип с каждым маркером.Я не знаю, как перенести данные из выпадающего списка «type».

PS

  1. Четвертая до последней строки - это код, в котором находятся данные адреса.передано в моей функции addNewMarker onSubmit.

  2. Код PHP над ним - это раскрывающийся список, который содержит возможные значения типов, как описано выше.

  3. В заключение мне нужны фактические коды о том, как получить тип маркера из выпадающего списка и перенести его вместе с функцией addNewMarker, чтобы testmap.php мог использовать значения в базе данных и мог быть легко переключен.

Большое спасибо тем, кто мне поможет!

 <script type="text/javascript">

            if(GBrowserIsCompatible()) {
                map_compatible = true;
            }

            /* Initialize the map this will be called when the document is loaded from: <body onLoad="initialize_map();"> */

            function initialize_map() {
                if( map_compatible ) {
                }       

            function addNewMarker(newAddress){
                var set;
                var lat;
                var longi;
                if(set==null){
                    set=1;
                    geocoder = new GClientGeocoder();
                    geocoder.getLatLng(newAddress, function(point){
                        if(!point){
                            alert(address + " not found");
                        }else{
                            lat = point.y;
                            longi = point.x;
                            alert("The latitude of " + newAddress + " is " + lat + " and longitude is " + longi);
                            default_address.push([latitude,longitude]);
                            location.href="testmap.php?lat="+lat+"&longi="+longi+"&set="+set+"&newAdd="+newAddress;
                        }                                                   
                    });
                }
            }

            function getType(type){
                //markertype = type;
                document.write("Hello");
            }


     </script>



        </head>

  <body onLoad="initialize_map();">

<div id="main-wrapper">
        <div id="main-padding"> 

    <div id="map_canvas"></div>
            <form name="markertype_form" method = "POST" action = "addMarker.php"  class="form">
                <?php
                    @$submit = $_POST['view'];
                    $selectedtype = '';
                    if(isset($_GET)){
                        $connect = mysql_connect("localhost","root","abc123");
                        mysql_select_db("mapping");
                        $query="SELECT id,typename FROM markertypes ORDER BY typename";

                        $result = mysql_query ($query);
                        echo "<select name='types'>";
                        $types = strip_tags(@$_POST['types']);
                        echo "<option disabled>---------------------Select---------------------</option>";
                        while($nt=mysql_fetch_array($result)){
                            $selected = false;
                            // check if the current value equals the value submited
                            if($_POST['types'] == $nt['id']){
                                $selected = true;
                                $selectedtype = $nt['typename'];
                            }
                            // show selected attribute only if $selected is true
                            echo "<option value='{$nt['id']}' ". ($selected ? "selected" : "") .">{$nt['typename']}</option>";
                        }
                        echo '</select>';
                        echo "</select>";
                        echo "<input type='submit' name ='view' value='View Details'>";// Closing of list box
                        echo '<br>';
                    }
                ?>

            </form>
            <form name="direction_form" onSubmit="addNewMarker(this.new_address.value); return false;" class="form">

                Add markers? Enter the address and we will mark it for you: <input type="text" name="new_address" class="form-field" /><br /><br />

                <input type="submit" value="  Mark this place!  " class="form-submit" />

            </form>

1 Ответ

3 голосов
/ 05 марта 2012

Если вы добавите идентификатор в поле выбора типов в вашем php, то вы можете добавить несколько строк кода в свой JavaScript выше.

Ниже предполагается, что элемент select «types» имеет идентификатор «marker-type»:

function addNewMarker(newAddress){
            var set;
            var lat;
            var longi;
            var e = document.getElementById("marker-type");
            var mtype = e.options[e.selectedIndex].value;
            if(set==null){
                set=1;
                geocoder = new GClientGeocoder();
                geocoder.getLatLng(newAddress, function(point){
                    if(!point){
                        alert(address + " not found");
                    }else{
                        lat = point.y;
                        longi = point.x;
                        alert("The latitude of " + newAddress + " is " + lat + " and longitude is " + longi);
                        default_address.push([latitude,longitude]);
                        location.href="testmap.php?lat="+lat+"&longi="+longi+"&set="+set+"&newAdd="+newAddress+"&type="+mtype;
                    }                                                   
                });
            }
        }

Обратите внимание, выше, что в функцию AddMarker я добавил новую переменную для "mtype", которая выбирает поле выбора и получает текущее значение опции.

Затем ниже, где API вызывает testmap.php, я добавил селектор типа и присвоил ему значение для переменной "mtype".

Позже в вашем коде testmap.php вы просто продолжаете, используя:

$_GET['type'] 
...