Вызов функции JavaScript в PHP для Google Map - PullRequest
1 голос
/ 29 февраля 2012

надеюсь, вы поможете мне. Я прочитал много форумов по этому поводу, но до сих пор не могу получить то, что хотел. Я использую PHP / MySQL для запуска моей системы. У меня уже был код на JavaScript, который позволит пользователю добавить место, и система может добавить это место на карте Google (встроенной в мой сайт) в качестве маркера. Теперь я хотел добавить координаты этого нового места в моей базе данных, а затем моя карта просто получит маркеры из базы данных для добавления в карту.

В настоящее время я получил широту и долготу добавленного места из javascript, а затем смог передать их моему php-скрипту в том же файле. Широта и долгота могут быть добавлены в мою базу данных, но я не знаю, как вернуться к JavaScript, чтобы добавить свои маркеры.

Каков наилучший способ сделать это? Есть ли лучшие подходы для решения этой проблемы?

<?php
$marker = array();
if(isset($_GET['set'])){
    $lat = $_GET['lat'];
    $long = $_GET['longi'];
    $newadd = $_GET['newAdd'];

    $connect = mysql_connect("localhost","root","");
    mysql_select_db("mapping");
    $query=mysql_query("INSERT INTO markers VALUES('','','$newadd','$lat','$long','')");

}
?>

Мой JavaScript для размещения маркеров

function addMarkers(){
        var tempMarker;
        var tabs = [];
        var blueIcon = new GIcon(G_DEFAULT_ICON);
        blueIcon.image = "http://maps.google.com/mapfiles/ms/micons/green-dot.png";

        // Set up our GMarkerOptions object
        markerOptions = { icon:blueIcon };
// for loop get data from db and loop it
        tempMarker = new GMarker(tempLatLng,markerOptions);
        //if(tabs.length==0){
            tabs[ctr] = [new GInfoWindowTab('Greetings','Hi! Welcome'), new GInfoWindowTab('My Info',tempMarker.getLatLng().toString())];
        //}
        tabInfoWindow(tempMarker,tabs, ctr);
        markerArray.push(tempMarker);
        displayMarkers();
    }
}

Спасибо!

Ответы [ 2 ]

4 голосов
/ 29 февраля 2012

Используя jquery, вы можете опубликовать данные в ajax-запросе и продолжить добавление маркеров в обработчик успеха.

var location = {lat:56, lng:67, name:"my_place"};

$.ajax({
  url: "save_place.php",
  data: location,
  dataType:"json",
  success: function(response){
    if(response.success){

       // add marker to map here   

    }else{

        alert("Error adding location to database");

    }
  },
  error:function(){
    alert("Error in connecting to server");
  }
});

EDIT:

Из ваших комментариев я понимаю, что вам нужно это:

<?php
   $lat = isset($_GET['lat']) ? $_GET['lat'] : 0;
   $long = isset($_GET['longi']) ? $_GET['longi'] : 0;
   $newadd = isset($_GET['newAdd']) ? $_GET['newAdd'] : "";
 ?>
<html>
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script type='text/javascript' src="http://maps.google.com/maps/api/js?sensor=false&.js"></script>
        <style type='text/css'>
            #map {
              width: 400px;
              height: 400px;
            }
        </style>
    </head>
    <body>
    <div id="map"></div> 

    <script type='text/javascript'>//<![CDATA[ 

    var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 5,
        center: new google.maps.LatLng(55, 11),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    function addMarker(lat, lng, newAdd) {

        alert(" Adding marker " +  lat + "," + lng);

        this.lat = lat;
        this.long = lng;

        var location = new google.maps.LatLng(lat, long);
        var marker = new google.maps.Marker({
            position: location,
            title: name,
            map: map,
            draggable: true
        });
        map.setCenter(location);

    }
    <?php
        echo "addMarker($lat, $long, '$newadd')";
    ?>  

    </script>

    </body>
</html>

URL: /test.php?lat=40.735812&longi=-74.001389&newAdd=" rel="nofollow">http:///test.php?lat=40.735812&longi=-74.001389&newAdd=

0 голосов
/ 29 февраля 2012

Хорошо, у меня есть конечная точка на стороне PHP, которую я могу запросить для маркеров. Затем, когда моя карта загрузится, я позвоню, чтобы получить их, а затем добавлю их:

$.post('/server/getMarkers',{},function(markers) {
   for(var i=0; i < markers.length; i++) {
       marker = new google.maps.Marker({
            position: new google.maps.LatLng(marker[i].latitude, marker[i].longitude),
            id:marker[i].id
       });

       google.maps.event.addListener(marker, "click", function() {

        //request data for this.id to show in info window if needed

       });
   }

});

Метод getMarkers на стороне PHP может выглядеть примерно так

public function getMarkers() {

    /* fetch an array of markers details from the db by any means... */
    $markers = getMarkersFromDB();

    foreach ($markers as $key=> $marker) {
            $payload[$key]['latitude'] = $marker->latitude;
            $payload[$key]['longitude'] =  $marker->longitude;
            $payload[$key]['id'] = $marker->id;
    }
    echo json_encode($payload);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...