diff --git a/gmap_plugin_style_gmap.inc b/gmap_plugin_style_gmap.inc index c8f2aa8..f82f47e 100755 --- a/gmap_plugin_style_gmap.inc +++ b/gmap_plugin_style_gmap.inc @@ -105,6 +105,8 @@ class gmap_plugin_style_gmap extends views_plugin_style { $defaults = gmap_defaults(); + $lat_field = NULL; + $lon_field = NULL; if ($this->options['datasource'] == 'location') { $lat_field = 'gmap_lat'; $lon_field = 'gmap_lon'; @@ -124,17 +126,23 @@ class gmap_plugin_style_gmap extends views_plugin_style { $lon_field = 'field_' . $this->options['geolocation']; } // Determine fieldname for latitude and longitude fields. - else { - if ($this->options['datasource'] == 'fields') { - // "[0]['raw']['value']"; - $lat_field = 'field_' . $this->options['latfield']; - // "[0]['raw']['value']"; - $lon_field = 'field_' . $this->options['lonfield']; + elseif ($this->options['datasource'] == 'fields') { + if ($this->options['latfield'] && isset($this->view->field[$this->options['latfield']]->field_alias)) { + $lat_field = $this->view->field[$this->options['latfield']]->field_alias; + } + + if ($this->options['lonfield'] && isset($this->view->field[$this->options['lonfield']]->field_alias)) { + $lon_field = $this->view->field[$this->options['lonfield']]->field_alias; } } } } + // Exit if no lat / lon fields found. + if (empty($lat_field) || empty($lon_field)) { + return; + } + // Determine fieldname for marker field. if ($this->options['markers'] == 'field') { $marker_field_obj = $this->view->display_handler->get_handler('field', $this->options['markerfield']); @@ -210,13 +218,13 @@ class gmap_plugin_style_gmap extends views_plugin_style { $lon = isset($row->{$lon_field}[0]['raw']['lng']) ? (float) $row->{$lon_field}[0]['raw']['lng'] : NULL; } elseif ($this->options['datasource'] == 'fields') { - $lat = isset($row->{$lat_field}[0]['raw']['value']) ? (float) $row->{$lat_field}[0]['raw']['value'] : NULL; - $lon = isset($row->{$lon_field}[0]['raw']['value']) ? (float) $row->{$lon_field}[0]['raw']['value'] : NULL; + $lat = isset($row->{$lat_field}) ? (float) $row->{$lat_field} : NULL; + $lon = isset($row->{$lon_field}) ? (float) $row->{$lon_field} : NULL; // Field is Location CCK. if (!$lat || !$lon) { - $lat = isset($row->{$lat_field}[0]['raw']['latitude']) ? $row->{$lat_field}[0]['raw']['latitude'] : NULL; - $lon = isset($row->{$lon_field}[0]['raw']['longitude']) ? $row->{$lon_field}[0]['raw']['longitude'] : NULL; + $lat = is_array($row->{$lat_field}) && isset($row->{$lat_field}[0]['raw']['latitude']) ? $row->{$lat_field}[0]['raw']['latitude'] : NULL; + $lon = is_array($row->{$lon_field}) && isset($row->{$lon_field}[0]['raw']['longitude']) ? $row->{$lon_field}[0]['raw']['longitude'] : NULL; } } @@ -621,4 +629,4 @@ class gmap_plugin_style_gmap extends views_plugin_style { } } } -// @codingStandardsIgnoreEnd \ No newline at end of file +// @codingStandardsIgnoreEnd