首先,如果可以,请更改您的 PHP 代码以生成 JSON 而不是 XML。JSON 与从 PHP 生成 XML 一样容易 - 只需创建一个包含所需内容的 PHP 数组并在其上调用json_encode。该页面上有很多示例。并且 JSON在 JavaScript 中比在 XML 中更容易使用。
例如,如果我们从您的 XML 文件中摘录并改为 JSON 格式,它将如下所示:
{
"markers": [
{
"section": "Female",
"name": "Colorado Hooper",
"address": "1415 Market St ",
"gender": "Female",
"graduation": 1996,
"degree": "MS Computer Information Systems",
"lat": 39.748177,
"lng": -105.000504,
"zipcode": "80202",
"type": ""
},
{
"section": "Female",
"name": "Willow Weiss",
"address": "259 E Broad St ",
"gender": "Female",
"graduation": 2001,
"degree": "MS Computer Science",
"lat": 33.957802,
"lng": -83.374657,
"zipcode": "30601",
"type": ""
}
]
}
使用 JSON 的好处在于,您可以直接在 JavaScript 中访问数据,而不必为要使用的每个元素和属性调用一堆解析函数。它节省了大量工作并使 JavaScript 代码更清晰、更易于理解。
您还可以使用正确的数据类型:请注意,lat
andlng
值是数字而不是字符串,对于graduation
(如果您希望年份是数字)也是如此。但要小心:邮政编码不是数字;它们应始终作为字符串处理。(如果这是一个问题,你总是可以继续对所有内容使用字符串,并在 JavaScript 代码中需要时转换为数字。)
这听起来像是您可以做的事情,还是出于某种原因您需要使用 XML?
现在跳到距离计算...您没有说要计算什么距离,但是如果您有任何两个纬度/经度坐标,则可以使用Maps API 几何库google.maps.geometry.spherical.computeDistanceBetween()
中的函数轻松获取它们之间的距离. 例如,假设您将上面的 JSON 对象存储在名为 的变量中,并且您想要获取文件中前两个条目之间的距离。它可能是这样的:json
var computeDistanceBetween = google.maps.geometry.spherical.computeDistanceBetween;
var markerA = json.markers[0];
var markerB = json.markers[1];
var latLngA = new google.maps.LatLng( markerA.lat, markerA.lng );
var latLngB = new google.maps.LatLng( markerB.lat, markerB.lng );
var distance = computeDistanceBetween( latLngA, latLngB );
即使您使用 XML,距离计算也是类似的,但您必须进行 XML 解析才能获得所需的数据属性。