Google地图-获取英国县的坐标

时间:2018-09-24 14:57:04

标签: javascript google-maps google-maps-api-3 polygon openstreetmap

我想知道是否有人可以建议我如何获取英国县的坐标,以便能够使用Google Maps API向Google地图添加多边形?

我已经看过使用https://nominatim.openstreetmap.org/details.php?place_id=198164455来检索OSM关系以便能够使用http://polygons.openstreetmap.fr/

例如:莱斯特郡OSM = 189890

http://polygons.openstreetmap.fr/index.py?id=189890

我使用了该区域的坐标,但是我相信这些坐标是不正确的,因为多边形出现在海中而不是在县上空。

任何人都可以建议我如何获取英国各县的坐标以添加多边形吗?我不确定是否有任何工具可以为您生成这些工具?

我的代码: (莱斯特郡(var leicestershire)应该具有该县的坐标)

function initialize() {

        var pin = new google.maps.LatLng(52.374490, -0.713289);

        var map = new google.maps.Map(document.getElementById('map-canvas'), {
            zoom: 5,
            //minZoom: 15,
            //maxZoom: 15,
            center: pin,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            overviewMapControl:true,
            mapTypeControl:false,
            zoomControl: true,
            streetViewControl: false,
            draggable: true
        });
        var marker = new google.maps.Marker({
          position: pin,
          map: map
        });

        var leicestershire = [];
        var leicestershirePoly = [];


        leicestershire.forEach(function(coordinate) {
            var latlng = coordinate.split(",");


            var lat =  parseFloat(latlng[0]);
            var lng = parseFloat(latlng[1]);

            if(!isNaN(lat) && !isNaN(lng)) {
                leicestershirePoly.push({lat: lat, lng: lng});
            }else{
                console.log(coordinate);
            }
        });


        var leicesterRegion = new google.maps.Polygon({
            paths: leicestershirePoly,
            strokeColor: '#FF0000',
            strokeOpacity: 0.8,
            strokeWeight: 2,
            fillColor: '#FF0000',
            fillOpacity: 0.35
        });
        leicesterRegion.setMap(map);

    }

    google.maps.event.addDomListener(window, 'load', initialize);

1 个答案:

答案 0 :(得分:1)

莱斯特郡在Google Maps中解析为52.772571, -1.2052126。示例多边形的第一行坐标为-1.5975472, 52.7004047,因此显然,经度和纬度是倒置的。

在您的forEach循环中,替换

var lat = parseFloat(latlng[0]);
var lng = parseFloat(latlng[1]);

作者

var lat = parseFloat(latlng[1]);
var lng = parseFloat(latlng[0]);

如果您其余的代码都在工作,那应该足以解决该问题。