Как я могу отобразить этот многоугольник на карте Google? - PullRequest
0 голосов
/ 19 августа 2010

У меня есть данные MultiPolygon (штат Калифорния, США), которые я пытаюсь отобразить на карте Google (API JavaScript v3).

Ссылка на данные находятся здесь на CodePaste.NET .(Примечание: я вставил его туда, потому что данные будут спамить этот пост).

Итак, я попытался превратить их в некоторые данные Json ... и затем отобразить этот MultiPolygon на карте Google.Он зависает / не работает: (

Вот jQuery, который я использовал ...

function getTestData() {
    // Grab the California state data.
    var request = $.getJSON("/Foo/Bar?format=json", function (results) {
            // map it.
            var polygon = createGeoJsonPolygon(results, "#FF7800", "#46461F");
            polygon.setMap(map);
    });
}

function createGeoJsonPolygon(geojson, strokeColour, fillColour) {
    var coords = geojson.coordinates; // Array of polygons.
    var paths = [];

    $.each(coords, function (i, n) {
        $.each(n, function (j, o) {
            var path = [];
            $.each(o, function (k, p) {
                var ll = new google.maps.LatLng(p[1], p[0]);
                path.push(ll);
            });
            paths.push(path);
        });
    });

    return new google.maps.Polygon({
        paths: paths,
        strokeColor: strokeColour,
        strokeOpacity: 1,
        strokeWeight: 2,
        fillColor: fillColour,
        fillOpacity: 0.25
    });
}

Может кто-нибудь помочь? У кого-нибудь есть секунда, чтобы попробовать и посмотреть, еслиони могут нарисовать мои образцы данных на карте Google? Я не уверен, что мой код неверен или данные были извлечены неправильно.

Ответы [ 3 ]

1 голос
/ 20 августа 2010

Мой пост в группах Google пришел, чтобы помочь спасти день.

Вот что было предложено:

function createGeoJsonPolygon(geojson, strokeColour, fillColour) {
    var coords = geojson.coordinates; // Array of polygons.
    var paths = [];

    $.each(coords, function (i, n) { 
        var path = []; 
        $.each(n, function (j, p) { 
            var ll = new google.maps.LatLng(p[1], p[0]); 
            path.push(ll); 
        }); 
        paths.push(path); 
    }); 

    return new google.maps.Polygon({ 
        paths: paths, 
        strokeColor: "#FF0000", 
        strokeOpacity: 0.8, 
        strokeWeight: 1, 
        fillColor: "#FF0000", 
        fillOpacity: 0.35, 
        map: map 
    }); 
} 
0 голосов
/ 19 августа 2010

Без кодирования контуров многоугольника вы можете использовать только один контур для каждого многоугольника, см. Документы: http://code.google.com/intl/ru/apis/maps/documentation/javascript/v2/reference.html#GPolygon. Он принимает только массив точек, а не контуров.

Прочтите о кодировании полигонов для карт Google, для этого есть готовый js.

редактирование: документы для v3: http://code.google.com/intl/ru/apis/maps/documentation/javascript/reference.html#PolygonOptions

0 голосов
/ 19 августа 2010

Вы сделали многоугольник; Вы не добавили его ни на одну карту.

Предполагая, что map является переменной типа google.maps.Map, сделайте следующее:

var poly = createGeoJsonPolygon( arg1, arg2, arg3 );
poly.setMap( map );

Также обратите внимание, что ваши данные (на которые вы ссылаетесь) - это , а не (как вы заявляете) массив точек; это массив массивов точек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...