如何在xml文件中查找位于经度和纬度半径范围内的位置

如何在xml文件中查找位于经度和纬度半径范围内的位置,xml,google-maps,Xml,Google Maps,我在这附近搜索过,但没有找到任何与我要找的东西相近的东西。我有一个工作地图,根据一些标准对标记进行排序。我想引入一个新的标准,使我能够在经度和纬度的半径范围内进行搜索 现在我的问题是,既然我已经有了一种通过mysql/php生成xml文件的方法,那么有没有一种方法可以计算出我的php/mysql生成的xml文件中存在的经度和纬度信息的距离,而不必重新编码这个xml文件。我见过的所有方法都是计算从lat和lng到数据库中存储信息的距离 换句话说,如果xml文件中存在lat和lng信息,如何将lat

我在这附近搜索过,但没有找到任何与我要找的东西相近的东西。我有一个工作地图,根据一些标准对标记进行排序。我想引入一个新的标准,使我能够在经度和纬度的半径范围内进行搜索

现在我的问题是,既然我已经有了一种通过mysql/php生成xml文件的方法,那么有没有一种方法可以计算出我的php/mysql生成的xml文件中存在的经度和纬度信息的距离,而不必重新编码这个xml文件。我见过的所有方法都是计算从lat和lng到数据库中存储信息的距离

换句话说,如果xml文件中存在lat和lng信息,如何将lat和lng信息传递给距离计算公式。顺便说一下,我的php/mysql生成的xml文件可以在这里查看


阿桑特!谢谢大家!

首先,如果可能的话,将PHP代码更改为生成JSON而不是XML。从PHP生成JSON和从XML生成JSON一样容易——只需创建一个包含所需内容的PHP数组并调用它即可。那一页上有很多例子。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": ""
        }
    ]
}
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 );
使用JSON的好处在于,您可以直接在JavaScript中访问数据,而不必为要使用的每个元素和属性调用一系列解析函数。它节省了大量工作,并使JavaScript代码更干净、更易于理解

您还可以使用正确的数据类型:请注意,lat和lng值是数字,而不是字符串,如果您希望年份是数字,则对于毕业也是一样的。但要小心:邮政编码不是数字;它们应始终作为字符串处理。如果这是一个问题,您可以继续在JavaScript代码中使用字符串,并在需要时将其转换为数字

这听起来像是您可以做的事情,还是出于某种原因需要使用XML

现在跳到距离计算。。。您没有说明要计算的距离,但如果您有任意两个lat/lng坐标,则可以使用google.maps.geometry.Spheremic.ComputedIstanceBeween函数从中轻松获得它们之间的距离。例如,假设上面的JSON对象存储在一个名为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": ""
        }
    ]
}
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解析才能获得所需的数据属性。

请澄清,您是在谈论将这些数据下载到JavaScript中,然后使用Google Maps API处理这些数据,还是要在服务器上进行这些距离计算?我下面的回答假设您想用JavaScript进行计算。感谢您花时间回复。我会研究你的建议,并传达我的进展!为了澄清距离,我想做一些类似于谷歌商店定位器的例子…我想显示与lat和lng相对应的标记,这些标记与给定的zipcode在一定的半径距离内…因此,假设我在下拉菜单上选择了一些zipcode和radius,我应该能够显示所有位于所选半径内的标记。