openlayers-8.x-4.x-dev/src/Plugin/Component/Tooltip/js/tooltip.js

src/Plugin/Component/Tooltip/js/tooltip.js
Drupal.openlayersPluginManager.register({
  fs: 'openlayers.Component:Tooltip',
  init: function(data) {
    var map = data.map;
    var container = jQuery('<div/>', {
      id: 'tooltip',
      'class': 'ol-tooltip'
    }).appendTo('body');
    var content = jQuery('<div/>', {
      id: 'tooltip-content'
    }).appendTo('#tooltip');

    var container = document.getElementById('tooltip');
    var content = document.getElementById('tooltip-content');

    /**
     * Create an overlay to anchor the popup to the map.
     */
    var overlay = new ol.Overlay({
      element: container,
      positioning: data.opt.positioning
    });

    map.addOverlay(overlay);

    jQuery(map.getViewport()).on('mousemove', function(evt) {
      var pixel = map.getEventPixel(evt.originalEvent);
      var coordinates = map.getEventCoordinate(evt.originalEvent);

      if ('getFeaturesAtPixel' in map) {
        //  Introduced in v4.3.0 - new map.getFeaturesAtPixel() method.
        var features = map.getFeaturesAtPixel(pixel);
      } else {
        //  Replaced in v4.3.0 - forEachFeatureAtPixel() method replaced.
        features = [];        
        map.forEachFeatureAtPixel(pixel, function(feature) {
          features.push(feature);
        });
      }

      var feature = undefined;
      
      if (features && features.length > 0) {
        for (item of features) {
          feature = item;
        }
      }

      if (feature) {
        var featureProperties = feature.getProperties();
        var tooltipContent = '';

        if (featureProperties.tooltip_content !== undefined) {
          tooltipContent = featureProperties.tooltip_content;
        } else if (featureProperties.name !== undefined) {
          tooltipContent = featureProperties.name;
        }

        for (key in featureProperties) {        
          if (key != 'tooltip_content') {
            oldTooltipContent = tooltipContent + '.';
            while (oldTooltipContent != tooltipContent) {
              oldTooltipContent = tooltipContent;
              tooltipContent = tooltipContent.replace('${' + key + '}', featureProperties[key]);
            }
          }
        }

        if (tooltipContent != '') {
          overlay.setPosition(coordinates);
          content.innerHTML = '<div class="ol-tooltip-content">' + tooltipContent + '</div>';
          container.style.display = 'block';
        }
      } else {
        container.style.display = 'none';
      }
    });
  }
});

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc