Карты Google - Получить координаты для округов Великобритании - PullRequest
0 голосов
/ 24 сентября 2018

Мне было интересно, может ли кто-нибудь посоветовать, как я могу получить координаты для округов Великобритании, чтобы иметь возможность добавлять полигон к картам Google с помощью 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 голосов
/ 24 сентября 2018

Лестершир разрешается до 52.772571, -1.2052126 в Google Maps.Первая строка координат в вашем примере полигона - -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]);

Этого должно быть достаточно для устранения проблемы, если остальная часть вашего кода работает.

...