Создание векторного слоя с GeoJson в openlayer - PullRequest
2 голосов
/ 01 сентября 2011

Я использовал для создания вектора GML вот так:

layer = new OpenLayers.Layer.GML("based",
        "./parser2.php",
        {
            isBaseLayer: true,
            format: OpenLayers.Format.GeoJSON,
            styleMap: new OpenLayers.StyleMap(mystyle),
            units:"m",
            maxResolution: 0.2,
            minResolution: 0.01
        })

map.addLayer(layer);

, но в настоящее время амортизируется за несколько раз, мне нужно использовать OpenLayers.Layer.Vector, но я не могу прочитать файл geoJon. Я пытался так:

   var test = new OpenLayers.Layer.Vector("test", {
    strategies: [new OpenLayers.Strategy.Fixed()],
    protocol: new OpenLayers.Protocol.HTTP({
        isBaseLayer: true,
        url: "data.json",
        styleMap: myStyles,
        format: new OpenLayers.Format.JSON()
        })
    });
map.addLayer(test);

но, к сожалению, это не работает.

есть ли у вас какие-либо подсказки?

Спасибо

1 Ответ

2 голосов
/ 03 сентября 2011

Я использую шаги, описанные на следующей веб-странице, чтобы добавить данные формата GeoJSON в слой: http://thinkwhere.wordpress.com/2011/06/26/geocommons-geojson-in-openlayers/ Поскольку ваш GeoJSON уже имеет правильный формат, не добавляйте {"type": "FeatureCollection", "features": ...} вокруг строки GeoJSON, как показано в этом примере.

На простом английском языке шаги:

  1. Создайте новый слой OpenLayers.Layer.Vector без параметров для чтения данных.
  2. Вы сами прочитали URL.
  3. В функции обратного вызова, вызываемой по завершении чтения, вы создаете объект OpenLayers.Format.GeoJSON(), используете его для чтения объектов из строки GeoJSON, а затем добавляете объекты в слой.
...