首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在xml文件上查找位于经度和纬度半径距离内的位置

问如何在xml文件上查找位于经度和纬度半径距离内的位置
EN

Stack Overflow用户
提问于 2013-03-28 13:58:20
回答 1查看 770关注 0票数 1

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

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

换言之,如何将经纬度和lng信息传递给给定的距离计算公式?顺便说一下,我的php/mysql生成的xml文件可以在这里查看http://daressalaam.co.tz/execute.php。

Asante!(谢谢!)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-28 15:23:06

首先,如果可能的话,更改PHP代码以生成JSON而不是XML。JSON和XML一样容易生成--只需创建一个包含所需内容的PHP数组并对其调用json_encode即可。在这个页面上有很多例子。而且,在JavaScript中使用JSON要比在XML语言中容易得多。

例如,如果我们从您的XML文件中提取一段代码,并将其转换为JSON格式,它将如下所示:

代码语言:javascript
复制
{
    "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和lng的值是数字而不是字符串,对于graduation也是如此(如果您希望年份是一个数字)。但要小心:邮政编码不是数字;它们应该始终作为字符串处理。(如果有问题,您可以继续使用字符串处理所有内容,并在需要时在JavaScript代码中转换为数字。)

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

现在跳到距离计算...您没有说明要计算的距离,但是如果您有任意两个经度/lng坐标,则可以使用Maps API's Geometry library中的google.maps.geometry.spherical.computeDistanceBetween()函数轻松获得它们之间的距离。例如,假设您将上面的JSON对象存储在一个名为json的变量中,并且希望获得文件中前两个条目之间的距离。它可能是这样的:

代码语言:javascript
复制
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解析才能获得所需的数据属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15675183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档