diff --git a/leaflet.formatters.inc b/leaflet.formatters.inc index 1c53a21..737796a 100644 --- a/leaflet.formatters.inc +++ b/leaflet.formatters.inc @@ -391,30 +391,38 @@ function leaflet_apply_map_settings(&$map, &$features, $map_settings, $entity_ty // Apply Icon settings: if ($icon == 'html') { - $icon_config = array( - 'label' => 'hidden', - 'settings' => array( - 'image_style' => isset($settings['icon']['iconImageStyle']) ? $settings['icon']['iconImageStyle'] : '', - ), - ); - $icon_field = field_view_field($entity_type, $feat['entity'], $settings['icon']['html'], $icon_config); - if (!empty($settings['icon']['iconSize']['x']) || !empty($settings['icon']['iconSize']['y'])) { - // We hand the size off to the API, but the rendered HTML will dictate - // its own size, so we override that as well. - // @todo: actually allow the API settings to control this. - $feat['icon']['iconSize'] = $settings['icon']['iconSize']; - foreach (element_children($icon_field) as $i) { - if (!empty($settings['icon']['iconSize']['x'])) { - $icon_field[$i]['#item']['width'] = $settings['icon']['iconSize']['x']; - unset($icon_field[$i]['#item']['width']); - } - if (!empty($settings['icon']['iconSize']['y'])) { - $icon_field[$i]['#item']['height'] = $settings['icon']['iconSize']['y']; - unset($icon_field[$i]['#item']['width']); + + // Maps handled by Views will have rendered HTML already. + if (isset($feat['rendered_html'])) { + $feat['html'] = $feat['rendered_html']; + } + else { + $icon_config = array( + 'label' => 'hidden', + 'settings' => array( + 'image_style' => isset($settings['icon']['iconImageStyle']) ? $settings['icon']['iconImageStyle'] : '', + ), + ); + $icon_field = field_view_field($entity_type, $feat['entity'], $settings['icon']['html'], $icon_config); + if (!empty($settings['icon']['iconSize']['x']) || !empty($settings['icon']['iconSize']['y'])) { + // We hand the size off to the API, but the rendered HTML will dictate + // its own size, so we override that as well. + // @todo: actually allow the API settings to control this. + $feat['icon']['iconSize'] = $settings['icon']['iconSize']; + foreach (element_children($icon_field) as $i) { + if (!empty($settings['icon']['iconSize']['x'])) { + $icon_field[$i]['#item']['width'] = $settings['icon']['iconSize']['x']; + unset($icon_field[$i]['#item']['width']); + } + if (!empty($settings['icon']['iconSize']['y'])) { + $icon_field[$i]['#item']['height'] = $settings['icon']['iconSize']['y']; + unset($icon_field[$i]['#item']['width']); + } } } + $feat['html'] = render($icon_field); } - $feat['html'] = render($icon_field); + $feat['html_class'] = $settings['icon']['htmlClass']; $feat['icon']['iconAnchor'] = $settings['icon']['iconAnchor']; } diff --git a/leaflet_views/leaflet_views_plugin_style.inc b/leaflet_views/leaflet_views_plugin_style.inc index dcc7958..a177088 100644 --- a/leaflet_views/leaflet_views_plugin_style.inc +++ b/leaflet_views/leaflet_views_plugin_style.inc @@ -268,6 +268,12 @@ class leaflet_views_plugin_style extends views_plugin_style { } } } + if ($this->options['icon']['iconType'] == 'html') { + foreach ($points as &$point) { + $target_field = $this->options['icon']['html']; + $point['rendered_html'] = isset($this->rendered_fields[$id][$target_field]) ? $this->rendered_fields[$id][$target_field] : ''; + } + } // Let modules modify the points data. drupal_alter('leaflet_views_alter_points_data', $result, $points); // Merge these points into the $data array for map rendering: