@HorNik

Как с помощью Openlayers задавать информацию о объектах на карте?

Недавно только погрузился в эту среду и самостоятельно сложновато разбираться. Передо мной стоит задача - разобраться с openlayers. Для начала необходимо создать небольшую программу отображающий небольшую улочку и при клике на здание отобразить какую либо информацию.
Всё что я пока сделал отобразил внизу.

<!DOCTYPE html>
<html>
  <head>
    <title>GeoJSON</title>
    <link rel="stylesheet" href="ol.css" type="text/css">
    <script src="ol.js"></script>
  </head>
  <body>
    <div id="map" class="map"></div>
    <script>
      var image = new ol.style.Circle({
        radius: 5,
        fill: null,
        stroke: new ol.style.Stroke({color: 'red', width: 1})
      });

      var styles = {
        'Point': new ol.style.Style({
          image: image
        }),
        'LineString': new ol.style.Style({
          stroke: new ol.style.Stroke({
            color: '#ffffff',
            width: 1
          })
        }),
		
		//Стиль линий
        'MultiLineString': new ol.style.Style({
          stroke: new ol.style.Stroke({
            color: '#000000',
            width: 1
          })
        }),
        
		
		//Стиль полигона
        'MultiPolygon': new ol.style.Style({
          stroke: new ol.style.Stroke({
            color: '#000000',
            width: 1
          }),
          fill: new ol.style.Fill({
            color: 'rgba(255, 255, 0, 0.9)'
          })
        }),
        
       
        'Circle': new ol.style.Style({
          stroke: new ol.style.Stroke({
            color: 'red',
            width: 2
          }),
          fill: new ol.style.Fill({
            color: 'rgba(255,0,0,0.2)'
          })
        })
      };

      var styleFunction = function(feature) {
        return styles[feature.getGeometry().getType()];
      };

	  // Описание системы координат и объектов
      var geojsonObject = {
		//Описание системы координат
        'type': 'FeatureCollection',
        'crs': {
          'type': 'name',
          'properties': {
            'name': 'EPSG:3857'
          }
        },
        'features': [ {
          'type': 'Feature',
          'geometry': {
            'type': 'MultiLineString',
            'coordinates': [
              [[-15e5, 3e5], [6e5, 3e5]],
			  [[-15e5, 5e5], [6e5, 5e5]],
			  
			  [[-14e5, 4e5], [-12e5, 4e5]],[[-11e5, 4e5], [-9e5, 4e5]],[[-8e5, 4e5], [-6e5, 4e5]],[[-5e5, 4e5], [-3e5, 4e5]],[[-2e5, 4e5], [-0e5, 4e5]],[[1e5, 4e5], [3e5, 4e5]],[[4e5, 4e5], [5e5, 4e5]],
            ]
          }
        }, {
          'type': 'Feature',
          'geometry': {
            'type': 'MultiPolygon',
            'coordinates': [
              
			  [[[-5e5, 6e5], [-5e5, 8e5], [-9e5, 8e5], [-9e5, 6e5]]],
			  [[[-10e5, 6e5], [-10e5, 8e5], [-14e5, 8e5], [-14e5, 6e5]]],
			  [[[-4e5, 6e5], [-4e5, 8e5], [-0e5, 8e5], [-0e5, 6e5]]],
			  [[[1e5, 6e5], [1e5, 8e5], [5e5, 8e5], [5e5, 6e5]]],
			  
			  
			  
			  
              [[[3e5, -1e5],[3e5, -2.5e5],[1e5, -2.5e5],[1e5, -1e5]]],
			  [[[1e5, 0e5], [1e5, 2e5], [5e5, 2e5], [5e5, -3e5],[3.5e5,-3e5],[3.5e5,0e5]]],
			  [[[0e5, 1e5],[0e5,-3e5],[-14e5, -3e5],[-14e5,1e5],[-11e5,1e5],[-11e5,2e5],[-3e5,2e5],[-3e5,1e5]]],
			  
            ]
          }
        }]
      };
	
	  
	  //Обявление подключения библиотеки GeoJSON
      var vectorSource = new ol.source.Vector({
        features: (new ol.format.GeoJSON()).readFeatures(geojsonObject)
      });
	
	  
	  //Сбор этого всего в 1 слой.
      var vectorLayer = new ol.layer.Vector({
        source: vectorSource,
        style: styleFunction
      });
	  
	  //Создание обекта - "Карта"
      var map = new ol.Map({
        layers: [
          vectorLayer
        ],
        target: 'map',
		//Добавнение пользовательского интерфейса
        controls: ol.control.defaults({
          attributionOptions:  ({
            collapsible: false
          })
        }),
		
		//Позиция камеры при загрузке
        view: new ol.View({
          center: [-4e5, 2e5],
          zoom: 6
        })
      });
    </script>
  </body>
</html>
  • Вопрос задан
  • 455 просмотров
Пригласить эксперта
Ответы на вопрос 1
Задай этот вопрос лучше тут
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы