2012-02-29 20 views
1

JavaScript函數希望你能幫助我。我已經閱讀了很多關於此的論壇,但仍然無法獲得我想要的內容。我使用PHP/MySQL來運行我的系統。我已經有一個JavaScript代碼,將允許用戶添加一個地方,系統可以添加在谷歌地圖的那個地方(嵌入在我的網站)作爲標記。現在,我想是添加新的地點的座標在我的數據庫,然後我的地圖將只從數據庫中獲取的標記在地圖上添加。調用PHP中的谷歌地圖

目前,我所做的是讓從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(); 
    } 
} 

謝謝!

回答

4

使用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"); 
    } 
}); 

編輯:

從您的意見,我明白你需要的是這一個:

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

網址:http://<domain>/test.php?lat=40.735812&longi=-74.001389&newAdd=

0

那麼我做的是對一個端點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 

     }); 
    } 

}); 

在PHP端的getMarkers方法可以是這個樣子

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); 
} 
+0

我能知道什麼是'/服務器/ getMarkers'? – 2012-02-29 07:47:51