【问题标题】:Create array of polygon coordinates from the xml从 xml 创建多边形坐标数组
【发布时间】:2013-08-28 01:06:21
【问题描述】:

我在 XML 文件中有多边形坐标以在 Google 地图上显示多边形形状,我只想从 xml 中获取它们,并且需要创建如下所示的数组。

 var triangleCoords = [
                              new google.maps.LatLng(51.055221725218054, -3.1630325317382812),
                              new google.maps.LatLng(51.010961025187314, -3.1359100341796875),
                              new google.maps.LatLng(51.043135193868025, -3.063812255859375)

                          ];

感谢您的回复。这是下面的代码,它不显示多边形形状。

var bermudaTriangle;


                        var points = "(51.055221725218054, -3.1630325317382812),(51.010961025187314, -3.1359100341796875),(51.043135193868025, -3.063812255859375)";


                        points = points.substr(1, points.length - 2).split("),(");
                        var triangleCoords = points.map(function (pointString) {
                            var latlon = pointString.split(", ");
                            return { lat: latlon[0], lon: latlon[1] };
                        });


                        // Construct the polygon
                        bermudaTriangle = new google.maps.Polygon({
                            paths: JSON.stringify(triangleCoords),
                            strokeColor: '#FF0000',
                            strokeOpacity: 0.8,
                            strokeWeight: 2,

                            fillColor: '#FF0000',
                            fillOpacity: 0.35
                        });

                        bermudaTriangle.setMap(map);

                    });

XML 代码获取坐标。

   $(xml).find('Location').each(function () {


                        var points= $(this).find('Coodinates').text();

//这里我会成功获得积分,但需要创建如上的数组 (51.055221725218054, -3.1630325317382812),(51.010961025187314, -3.1359100341796875),(51.043135193868025, -3.06

}

【问题讨论】:

    标签: javascript jquery google-maps-api-3 geocoding


    【解决方案1】:

    如果我对您的帖子的理解是正确的,那么:

    var points= $(this).find('Coodinates').text();
    

    产生以下字符串:

    "(51.055221725218054, -3.1630325317382812),(51.010961025187314, -3.1359100341796875),(51.043135193868025, -3.063812255859375)"
    

    您可以使用如下脚本将其转换为数组 Google Maps LatLon 值:

    var points = points.substr(1, points.length-2).split("),(");
    var triangleCoords = points.map(function(pointString){
        var latlon = pointString.split(", ");
        return  new google.maps.LatLng(latlon[0], latlon[1]);
    });
    

    第一行去掉括号并将字符串拆分为一个数组,每个条目包含一个点的数据。之后的数组映射函数将每个字符串元素转换为 LatLng,然后添加到结果数组中。

    我在这里举个例子,用匿名对象替换谷歌地图 LatLng:http://jsfiddle.net/Jsv3x/

    【讨论】:

    • 优秀。让我试试这个。感谢您的帮助。
    • 以上代码会有小问题。我已集成但无法创建阵列。坐标=(51.055221725218054,-3.1630325317382812),(51.010961025187314,-3.1359100341796875),(51.043135193868025,-3.063812255859375); var points = coord.substr(1, points.length - 2).split("),("); var triangleCoords = points.map(function (pointString) { var latlon = pointString.split(", "); return new google.maps.LatLng(latlon[0], latlon[1]); });
    • 你得到什么错误?我在原始帖子中添加了一个链接,其中显示了数据转换的示例 - 希望这可能会有所帮助。
    • 感谢 Ultimate Gobblement。集成您的代码后,我仍然面临这个问题。我知道在某个地方做错了,请您纠正一下。我已将代码放在我的原始帖子中。
    • 您不应该将 triangleCoords 转换为 JSON 对象。这里有一个如何初始化 google.maps.Polygon 的示例:developers.google.com/maps/documentation/javascript/…
    猜你喜欢
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2012-07-05
    • 2012-08-31
    相关资源
    最近更新 更多