[GIS] OpenLayers create marker (feature with icon) from WKT

featuresjavascriptopenlayers-2well-known-text

I have a point object WKT. Like this: POINT (25.04568 48.221548). Also I have an icon in my project folder.

My goal is to show on a map an icon that represents a feature. Can it be just a normal OpenLayers feature (if yes, then how can I define that it should represent and icon) or do I need to create an OpenLayers marker (somehow create LonLat from WKT)?

Best Answer

If you want to change icons for all objects on map, you can change the style. For example:

testLayer = new OpenLayers.Layer.Vector("testLayer", {
      rendererOptions: { zIndexing: true },
      styleMap: new OpenLayers.StyleMap({
          "default": new OpenLayers.Style({
              externalGraphic: "../../pics/icon1.png",
              graphicWidth:32,
              graphicHeight:34,
              graphicXOffset:-10,
              graphicYOffset:-34  ,
              graphicZIndex: 1
          }, 
          OpenLayers.Feature.Vector.style["default"]),
          "select": new OpenLayers.Style({
              externalGraphic: "../../pics/icon2.png",
              graphicWidth:36,
              graphicHeight:38,
              graphicXOffset:-12,
              graphicYOffset:-38,
              graphicZIndex: 1000
          })
      })

If you want to set icon for one object, you can use OpenLayers.Marker. But it is not recommended. For example:

        function addNewMarkers() {
            ...
        var position = map.getLonLatFromPixel(e.xy);
        var size = new OpenLayers.Size(21,25);

    var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
    var icon = new OpenLayers.Icon('OpenLayers-2.12/img/marker-gold.png', size, offset);

    var markersLayer = map.getLayer('Markers');
        var myTestMarker = new OpenLayers.Marker(position,icon);
            ...
            markersLayer.addMarker(myTestMarker);
       }