0

放置标记后,我想调用一个以纬度和经度为输入的 php 函数(在另一个文件中),并将结果输出到页面上的 div 中。因此,无论何时移动标记,它都会使用函数的最新结果更新 div。

我知道我需要 javascript 来做到这一点,但我不是很熟悉它,任何帮助将不胜感激。

4

2 回答 2

3

这是一个使用 jQuery 触发 HTTP GET 的示例,当标记被添加到地图时以及无论何时被拖动。请求的结果被放置在一个 id 为“outputdiv”的 div 中。

// create and init map (make sure to have a div element with id "map")
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(37.4419, -122.1419), 13);

// this is the marker you want to track
var marker = new GMarker(new GLatLng(37.4419, -122.1419));
map.addOverlay(marker);

// create function to be executed on add/end of drag
var changeCallback = function(latlng) {
  // do HTTP GET to execute PHP function in file, with coordinate
  // as parameter and put result in div with id "outputdiv"
  $("#outputdiv").load("test.php?latlng=" + latlng.toUrlValue());
};

// add listener triggered whenever drag of marker has ended
GEvent.addListener(marker, "dragend", changeCallback);

// explicitly call when added
changeCallback(marker.getLatLng());

更新回答评论:回调函数的 latlng 参数是一个GLatLng对象,您可以在其中使用 lat() 和 lng() 来检索各个值。有关详细信息,请参阅Google Maps API 参考

于 2009-05-07T21:00:10.517 回答
0

您需要使用异步 JavaScript 和 XML(称为 AJAX)。可以在此处找到有关该主题的不错的教程:http: //www.w3schools.com/Ajax/Default.Asp

事实上,在阅读完这些示例后,您可能能够按照您的描述进行操作。

  1. 首先,您需要像这样在 JavaScript 中创建 XMLHttpRequest 对象:http: //www.w3schools.com/Ajax/ajax_browsers.asp
  2. 然后阅读有关如何定义onreadystatechange()方法的信息- 这是您指定服务器(您要调用的函数)响应时发生的情况的地方。
  3. 然后将请求发送到函数,您应该可以通过使用 GET 或 POST 请求查询 php 文件来调用该函数:xmlhttp.open("GET","myfunction.php",true); xmlhttp.send(null) ;

其余的只需按照教程进行,你应该没问题。你真的需要一个教程来学习 - javascript 很容易复制/粘贴和编辑:D

于 2009-05-07T19:08:07.633 回答