2016-04-12 4 views
0

Я пытаюсь нарисовать несколько кругов на карте. Я создаю круги как функции, а затем помещаю их в слой. Проблема, с которой я сталкиваюсь, заключается в том, что есть линия, соединяющая каждую из различных функций. Что вызывает связь с функциями?OpenLayers 3 Features Connected

// Generate some rings 
var radius = [1000, 2000]; 
var features = []; 
for(var i = 0; i < radius.length; i++) 
{ 
    features[i] = new ol.Feature(new ol.geom.Circle(center, radius[i]/ol.proj.METERS_PER_UNIT.m)); 
} 

// Add features to new layer. 
var layer = new ol.layer.Vector({ 
    source: new ol.source.Vector({ 
     features: features 
    }), 
    style: new ol.style.Style({ 
     stroke: new ol.style.Stroke({ 
      width: 1, 
      color: [0, 0, 255, 1] 
     }) 
    }) 
}); 
map.addLayer(layer); 

Edit: Вот скриншот того, что я получаю http://i.imgur.com/jV19gTJ.png

+0

Вы можете добавить скриншот с соединительных линий? Ваш код в основном работает отлично для меня, я сделал несколько вещей. Я приложу свою версию ниже, если это поможет. – sifriday

+0

Я просто посмотрел на ваш s/shot, и неясно, почему ваш код выше может вызвать это. Можете ли вы разместить больше своего кода? или воссоздать проблему в plunkr или jsfiddle? – sifriday

+0

@sifriday Я только что проверил его на плункерах, и у него не было соединительных линий. Проблема заключалась в том, что у меня были openlayers 3.15.0, и переход на 3.2.1 исправил проблему. Спасибо за помощь. – Mitch

ответ

0

Причина подключенных кругов - ошибка в открытых слоях. Обновление последней версии исправило проблему.

0

Ваш код работал хорошо для меня, хотя я должен определить начальный центр, который я наношу в [0,0], чтобы соответствуют представлению, определенному для карты. Я также добавил некоторый ol.Map кода (вы не предоставили этот бит в вашей Q, так что, может быть, проблема есть?)

Я использовал этот HTML:

<div id="map" style="width: 100%; height: 500px"></div> 

и этот JavaScript:

var center = [0, 0]; 
var radius = [1000, 2000, 3000, 4000]; 
var features = []; 
for(var i = 0; i < radius.length; i++) 
{ 
    features[i] = new ol.Feature(new ol.geom.Circle(center, radius[i]/ol.proj.METERS_PER_UNIT.m)); 
} 

// Add features to new layer. 
var layer = new ol.layer.Vector({ 
    source: new ol.source.Vector({ 
     features: features 
    }), 
    style: new ol.style.Style({ 
     stroke: new ol.style.Stroke({ 
      width: 1, 
      color: [0, 0, 255, 1] 
     }) 
    }) 
}); 

var map = new ol.Map({ 
    layers: [ 
     new ol.layer.Tile({ 
      source: new ol.source.OSM() 
     }), 
     layer 
    ], 
    target: 'map', 
    view: new ol.View({ 
     center: [0, 0], 
     zoom: 10 
    }) 
}); 
Смежные вопросы