diff --git a/gmap_parse_macro.inc b/gmap_parse_macro.inc
index ddbc80f..a2d959b 100644
--- a/gmap_parse_macro.inc
+++ b/gmap_parse_macro.inc
@@ -52,5 +52,8 @@ function _gmap_str2coord($str) {
  */
 function _gmap_parse_macro($instring, $ver = 2) {
   include_once drupal_get_path('module', 'gmap') . '/lib/Drupal/gmap/GmapMacroToolbox.php';
+  if(module_exists('php')) {
+		$instring = php_eval($instring);
+	}
   return GmapMacroToolbox::getInstance()->setMacroString($instring, $ver = 2)->getParsedMacro();
 }
diff --git a/gmap_plugin_style_gmap.inc b/gmap_plugin_style_gmap.inc
index c8f2aa8..1af112c 100755
--- a/gmap_plugin_style_gmap.inc
+++ b/gmap_plugin_style_gmap.inc
@@ -77,9 +77,12 @@ class gmap_plugin_style_gmap extends views_plugin_style {
     if ($this->options['markers'] == 'nodetype') {
       $this->view->query->add_field('node', 'type', 'gmap_node_type');
     }
-    elseif ($this->options['markers'] == 'taxonomy') {
+    elseif ($this->options['markers'] == 'taxonomy' && $this->view->base_table =='node') {
       $this->view->query->add_field('gmap_taxonomy_node', 'marker', 'gmap_node_marker');
     }
+	elseif ($this->options['markers'] == 'taxonomy' && $this->view->base_table =='users' ) {
+      $this->view->query->add_field('gmap_taxonomy_user', 'marker','gmap_user_marker');
+    }
     elseif ($this->options['markers'] == 'userrole') {
       $this->view->query->add_field('users_roles', 'rid', 'gmap_role_marker');
     }
@@ -245,6 +248,10 @@ class gmap_plugin_style_gmap extends views_plugin_style {
           elseif ($this->options['markers'] == 'taxonomy') {
             if (!empty($row->gmap_node_marker)) {
               $markername = $row->gmap_node_marker;
+            }elseif(!empty($row->gmap_user_marker)){
+              $markername = $row->gmap_user_marker;
+            }elseif(empty($row->gmap_user_marker)){
+			  $markername = $this->view->style_options['markertype'];
             }
           }
           elseif ($this->options['markers'] == 'userrole') {
@@ -442,7 +449,7 @@ class gmap_plugin_style_gmap extends views_plugin_style {
       // @@@ Detect view type automatically?
       '#options' => array(
         'nodetype' => t('By content type (for node views)'),
-        'taxonomy' => t('By term (for node views)'),
+        'taxonomy' => t('By term'),
         'userrole' => t('By user role (for user views)'),
         'field' => t('Use marker field'),
         'static' => t('Use single marker type'),
@@ -621,4 +628,4 @@ class gmap_plugin_style_gmap extends views_plugin_style {
     }
   }
 }
-// @codingStandardsIgnoreEnd
\ No newline at end of file
+// @codingStandardsIgnoreEnd
diff --git a/gmap_taxonomy.install b/gmap_taxonomy.install
index bebf6ba..9304dcb 100644
--- a/gmap_taxonomy.install
+++ b/gmap_taxonomy.install
@@ -9,68 +9,88 @@
  * Implement hook_requirements().
  */
 function gmap_taxonomy_requirements($phase) {
-  $requirements = array();
-  if (!variable_get('taxonomy_maintain_index_table', TRUE)) {
-    $requirements['gmap_taxonomy_able_to_index'] = array(
-      'title' => t('GMap Taxonomy Markers'),
-      'value' => '',
-      'description' => t('The variable <em>taxonomy_maintain_index_table</em> is set to FALSE. gmap_taxonomy.module will not work properly.'),
-      'severity' => REQUIREMENT_ERROR,
-    );
-  }
-  return $requirements;
+	$requirements = array();
+	if (!variable_get('taxonomy_maintain_index_table', TRUE)) {
+		$requirements['gmap_taxonomy_able_to_index'] = array(
+			'title' => t('GMap Taxonomy Markers'),
+			'value' => '',
+			'description' => t('The variable <em>taxonomy_maintain_index_table</em> is set to FALSE. gmap_taxonomy.module will not work properly.'),
+			'severity' => REQUIREMENT_ERROR,
+		);
+	}
+	return $requirements;
 }
 
-
 /**
  * Implementation of hook_schema().
  */
 function gmap_taxonomy_schema() {
-  $schema['gmap_taxonomy_term'] = array(
-    'fields' => array(
-      'tid' => array(
-        'type' => 'int',
-        'unsigned' => TRUE,
-        'not null' => TRUE,
-        'default' => 0,
-      ),
-      'marker' => array(
-        'type' => 'varchar',
-        'length' => 32,
-      ),
-    ),
-    'primary key' => array('tid'),
-  );
-
-  $schema['gmap_taxonomy_node'] = array(
-    'fields' => array(
-      'nid' => array(
-        'type' => 'int',
-        'unsigned' => TRUE,
-        'not null' => TRUE,
-        'default' => 0,
-      ),
-      /*'vid' => array(
-        'type' => 'int',
-        'unsigned' => TRUE,
-        'not null' => TRUE,
-        'default' => 0,
-      ),*/
-      'tid' => array(
-        'type' => 'int',
-        'unsigned' => TRUE,
-        'not null' => TRUE,
-        'default' => 0,
-      ),
-      'marker' => array(
-        'type' => 'varchar',
-        'length' => 32,
-      ),
-    ),
-    'primary key' => array('nid'),
-  );
-
-  return $schema;
+	$schema['gmap_taxonomy_term'] = array(
+		'fields' => array(
+			'tid' => array(
+				'type' => 'int',
+				'unsigned' => TRUE,
+				'not null' => TRUE,
+				'default' => 0,
+			),
+			'marker' => array(
+				'type' => 'varchar',
+				'length' => 32,
+				),
+			),
+		'primary key' => array('tid'),
+	);
+
+	$schema['gmap_taxonomy_node'] = array(
+		'fields' => array(
+			'nid' => array(
+			'type' => 'int',
+			'unsigned' => TRUE,
+			'not null' => TRUE,
+			'default' => 0,
+			),
+		/*'vid' => array(
+		 'type' => 'int',
+		 'unsigned' => TRUE,
+		 'not null' => TRUE,
+		 'default' => 0,
+		 ),*/
+			'tid' => array(
+				'type' =>
+				'int',
+				'unsigned' => TRUE,
+				'not null' => TRUE,
+				'default' => 0,
+				),
+			'marker' => array(
+				'type' => 'varchar',
+				'length' => 32,
+				),
+			),
+				'primary key' => array('nid'),
+			);
+
+	$schema['gmap_taxonomy_user'] = array(
+		'fields' => array(
+			'uid' => array(
+				'type' => 'int',
+				'unsigned' => TRUE,
+				'not null' => TRUE,
+				'default' => 0,
+				),
+			'tid' => array(
+				'type' => 'int',
+				'unsigned' => TRUE,
+				'not null' => TRUE,
+				'default' => 0, ),
+			'marker' => array(
+				'type' => 'varchar',
+				'length' => 32,
+			),
+			),
+		'primary key' => array('uid'),
+		);
+	return $schema;
 }
 
 /**
@@ -78,98 +98,123 @@ function gmap_taxonomy_schema() {
  * do fixups faster.
  */
 function gmap_taxonomy_update_5001() {
-  $ret = array();
-  // Removed because we just kill the table
-  // and recreate it in update 5002^H^H^H^H6001 anyway.
-  return $ret;
+	$ret = array();
+	// Removed because we just kill the table
+	// and recreate it in update 5002^H^H^H^H6001 anyway.
+	return $ret;
 }
 
 /**
  * Rebuild {gmap_taxonomy_node}.
  */
 function gmap_taxonomy_update_6001() {
-  $ret = array();
-
-  // Drop the existing table and rebuild it from scratch.
-  if (db_table_exists('gmap_taxonomy_node')) {
-    db_drop_table($ret, 'gmap_taxonomy_node');
-  }
-
-  $schema['gmap_taxonomy_node'] = array(
-    'fields' => array(
-      'nid' => array(
-        'type' => 'int',
-        'unsigned' => TRUE,
-        'not null' => TRUE,
-        'default' => 0,
-      ),
-      'vid' => array(
-        'type' => 'int',
-        'unsigned' => TRUE,
-        'not null' => TRUE,
-        'default' => 0,
-      ),
-      'tid' => array(
-        'type' => 'int',
-        'unsigned' => TRUE,
-        'not null' => TRUE,
-        'default' => 0,
-      ),
-      'marker' => array(
-        'type' => 'varchar',
-        'length' => 32,
-      ),
-    ),
-    'primary key' => array('vid'),
-    'indexes' => array(
-      'nid' => array('nid'),
-    ),
-  );
-
-  db_create_table($ret, 'gmap_taxonomy_node', $schema['gmap_taxonomy_node']);
-
-  // Recreate the data.
-  // Useful for repopulating in bulk... Copy to hook_enable()?
-  $ret[] = update_sql("INSERT INTO {gmap_taxonomy_node} (nid, vid, tid, marker) (SELECT n.nid, n.vid, t.tid, g.marker FROM {node_revisions} n INNER JOIN {term_node} t ON n.vid = t.vid INNER JOIN {gmap_taxonomy_term} g ON t.tid = g.tid GROUP BY n.vid ORDER BY NULL)");
-
-  return $ret;
+	$ret = array();
+
+	// Drop the existing table and rebuild it from scratch.
+	if (db_table_exists('gmap_taxonomy_node')) {
+		db_drop_table($ret, 'gmap_taxonomy_node');
+	}
+
+	$schema['gmap_taxonomy_node'] = array(
+		'fields' => array(
+			'nid' => array(
+				'type' => 'int',
+				'unsigned' => TRUE,
+				'not null' => TRUE,
+				'default' => 0,
+			),
+			'vid' => array(
+				'type' => 'int',
+				'unsigned' => TRUE,
+				'not null' => TRUE,
+				'default' => 0,
+			),
+			'tid' => array(
+				'type' => 'int',
+				'unsigned' => TRUE,
+				'not null' => TRUE,
+				'default' => 0,
+			),
+			'marker' => array(
+				'type' => 'varchar',
+				'length' => 32,
+			),
+			),
+		'primary key' => array('vid'), 'indexes' => array('nid' => array('nid'), ), );
+
+	db_create_table($ret, 'gmap_taxonomy_node', $schema['gmap_taxonomy_node']);
+
+	// Recreate the data.
+	// Useful for repopulating in bulk... Copy to hook_enable()?
+	$ret[] = update_sql("INSERT INTO {gmap_taxonomy_node} (nid, vid, tid, marker) (SELECT n.nid, n.vid, t.tid, g.marker FROM {node_revisions} n INNER JOIN {term_node} t ON n.vid = t.vid INNER JOIN {gmap_taxonomy_term} g ON t.tid = g.tid GROUP BY n.vid ORDER BY NULL)");
+
+	return $ret;
 }
 
 /**
  * Use vocabularies machine names instead of vids.
  */
 function gmap_taxonomy_update_7201() {
-  $enabled_vocabularies = variable_get('gmap_taxonomy_vocabs', array());
-  $vocabularies = taxonomy_vocabulary_load_multiple(array_keys(array_filter($enabled_vocabularies)));
+	$enabled_vocabularies = variable_get('gmap_taxonomy_vocabs', array());
+	$vocabularies = taxonomy_vocabulary_load_multiple(array_keys(array_filter($enabled_vocabularies)));
 
-  $result = array();
-  foreach ($vocabularies as $vocabulary) {
-    $result[$vocabulary->machine_name] = TRUE;
-  }
+	$result = array();
+	foreach ($vocabularies as $vocabulary) {
+		$result[$vocabulary -> machine_name] = TRUE;
+	}
 
-  // Save result.
-  variable_set('gmap_taxonomy_vocabs', $result);
+	// Save result.
+	variable_set('gmap_taxonomy_vocabs', $result);
 }
 
 /**
  * Split settings in a variable for each vocabulary.
  */
 function gmap_taxonomy_update_7202() {
-  $enabled_vocabularies = variable_get('gmap_taxonomy_vocabs', array());
+	$enabled_vocabularies = variable_get('gmap_taxonomy_vocabs', array());
 
-  foreach ($enabled_vocabularies as $machine_name => $enabled) {
-    variable_set('gmap_taxonomy_vocab_' . $machine_name, $enabled);
-  }
+	foreach ($enabled_vocabularies as $machine_name => $enabled) {
+		variable_set('gmap_taxonomy_vocab_' . $machine_name, $enabled);
+	}
 
-  variable_del('gmap_taxonomy_vocabs');
+	variable_del('gmap_taxonomy_vocabs');
 }
 
 /**
+ * Create schema for gmap_taxonomy_user.
+ */
+
+function gmap_taxonomy_update_7203() {
+	$schema['gmap_taxonomy_user'] = array(
+		'fields' => array(
+		'uid' => array(
+			'type' => 'int',
+			'unsigned' => TRUE,
+			'not null' => TRUE,
+			'default' => 0,
+		),
+		'tid' => array(
+			'type' => 'int',
+			'unsigned' => TRUE,
+			'not null' => TRUE,
+			'default' => 0,
+			),
+		'marker' => array(
+			'type' => 'varchar',
+			'length' => 32,
+			),
+		),
+		'primary key' => array('uid'),
+	);
+
+	db_create_table('gmap_taxonomy_user', $schema['gmap_taxonomy_user']);
+}
+/**
  * Rebuild {gmap_taxonomy_node} again.
  */
 /*
-function gmap_taxonomy_update_7000() {
-  // @@@ FIXME -- rebuild the table from scratch again.
-}
-*/
+ function gmap_taxonomy_update_7000() {
+ // @@@ FIXME -- rebuild the table from scratch again.
+ }
+ */
 // @codingStandardsIgnoreEnd
diff --git a/gmap_taxonomy.module b/gmap_taxonomy.module
index c7980a5..f5dc828 100644
--- a/gmap_taxonomy.module
+++ b/gmap_taxonomy.module
@@ -181,7 +181,7 @@ function gmap_taxonomy_node_update($node) {
     ->execute();
 
   // Get list of taxonomy_term_reference field names.
-  $gmap_taxonomy_fields = gmap_taxonomy_get_instances();
+  $gmap_taxonomy_fields = gmap_taxonomy_get_instances('node');
 
   // Get the markers.
   $gmap_taxonomy_markers = gmap_taxonomy_get_markers();
@@ -243,6 +243,70 @@ function gmap_taxonomy_node_revision_delete($node) {
 }
 */
 
+/*
+ * Implements hook_user_update
+ */
+function gmap_taxonomy_user_update(&$edit, $account, $category){
+	// Get list of taxonomy_term_reference field names.
+  $gmap_taxonomy_fields = gmap_taxonomy_get_instances('user');
+
+  // Get the markers.
+  $gmap_taxonomy_markers = gmap_taxonomy_get_markers();
+
+  // Loop through the users's terms and insert markers if applicable.
+  foreach ($gmap_taxonomy_fields['user'] as $fieldname) {
+    // Get this users's field values for this field.
+    $terms = field_get_items('user', $account, $fieldname, $account->language);
+
+    // Remove old value or skip if term has no value .
+    if (!$terms && $edit['original']->$fieldname) {
+    	db_delete('gmap_taxonomy_user')
+	  		->condition('uid', $account->uid)
+  			->execute();
+		continue;
+    }elseif(!$terms){
+	  continue;
+    }
+    // Otherwise loop through and set marker for term, if term has marker.
+    foreach ($terms as $key => $term) {
+      if (!isset($gmap_taxonomy_markers[$term['tid']])) {
+        continue;
+      }
+      // Insert to gmap_taxonomy_user table.
+      $exists = db_query('SELECT uid,tid,marker FROM {gmap_taxonomy_user} WHERE uid = :uid', array(':uid' => $account->uid))->fetchAll();
+	  if(empty($exists)){
+	  	//Insert only first row if "Term field" has more than one value
+	  	db_insert('gmap_taxonomy_user')
+	        ->fields(array(
+	          'uid' => $account->uid,
+	          'tid' => $term['tid'],
+	          'marker' => $gmap_taxonomy_markers[$term['tid']],
+	        ))
+	        ->execute();
+	  }/*elseif(!empty($exists) && taxonomy_term_load($exists[0]->tid)->weight > taxonomy_term_load($term['tid'])->weight){
+		db_update('gmap_taxonomy_user')
+	        ->fields(array(
+	          'tid' =>$term['tid'],
+	          'marker' => $gmap_taxonomy_markers[$term['tid']],
+	        ))
+	        ->condition('uid', $account->uid)
+	        ->execute();
+	  }*/elseif($key == 0){
+	  	db_update('gmap_taxonomy_user')
+	        ->fields(array(
+	          'tid' =>$term['tid'],
+	          'marker' => $gmap_taxonomy_markers[$term['tid']],
+	        ))
+	        ->condition('uid', $account->uid)
+	        ->execute();
+	  }
+
+    }
+  }
+}
+
+
+
 /**
  * Check if gmap taxonomy is enabled for the given vocabulary.
  *
@@ -284,6 +348,7 @@ function gmap_taxonomy_get_markers() {
       $gmap_taxonomy_markers = db_query('SELECT tid, marker FROM {gmap_taxonomy_term}')->fetchAllKeyed();
       cache_set('gmap_taxonomy_markers_data', $gmap_taxonomy_markers, 'cache', CACHE_TEMPORARY);
     }
+	$gmap_taxonomy_markers = db_query('SELECT tid, marker FROM {gmap_taxonomy_term}')->fetchAllKeyed();
   }
   return $gmap_taxonomy_markers;
 }
@@ -299,32 +364,56 @@ function gmap_taxonomy_get_markers() {
  *   Associative array keyed with node type
  *   and with values as array of field names.
  */
-function gmap_taxonomy_get_instances() {
+function gmap_taxonomy_get_instances($instance_type) {
   $gmap_taxonomy_fields = & drupal_static(__FUNCTION__);
   // TODO: Could do something with the vid,
   // but probably too much overhead to use it here.
   // As field_info_fields() only gives us machine names
   // and gmap_taxonomy_vocabs only gives us vid.
   // $gmap_taxonomy_vocabs = variable_get('gmap_taxonomy_vocabs', array());
-
-  if (!isset($gmap_taxonomy_fields)) {
-    if ($cache = cache_get('gmap_taxonomy_fields_data')) {
-      $gmap_taxonomy_fields = $cache->data;
-    }
-    else {
-      $gmap_taxonomy_fields = array();
-      // Get all field info.
-      $fields = field_info_fields();
-      // Loop through to get the ones of field type taxonomy_term_reference.
-      foreach ($fields as $field) {
-        if ($field['type'] == 'taxonomy_term_reference' && isset($field['bundles']['node'])) {
-          foreach ($field['bundles']['node'] as $node_type) {
-            $gmap_taxonomy_fields[$node_type][] = $field['field_name'];
-          }
-        }
-      }
-      cache_set('gmap_taxonomy_fields_data', $gmap_taxonomy_fields, 'cache', CACHE_TEMPORARY);
-    }
+  switch ($instance_type) {
+      case 'node':
+          if (!isset($gmap_taxonomy_fields)) {
+		    if ($cache = cache_get('gmap_taxonomy_fields_data')) {
+		      $gmap_taxonomy_fields = $cache->data;
+		    }
+		    else {
+		      $gmap_taxonomy_fields = array();
+		      // Get all field info.
+		      $fields = field_info_fields();
+		      // Loop through to get the ones of field type taxonomy_term_reference.
+		      foreach ($fields as $field) {
+		        if ($field['type'] == 'taxonomy_term_reference' && isset($field['bundles']['node'])) {
+		          foreach ($field['bundles']['node'] as $node_type) {
+		            $gmap_taxonomy_fields[$node_type][] = $field['field_name'];
+		          }
+		        }
+		      }
+		      cache_set('gmap_taxonomy_fields_data', $gmap_taxonomy_fields, 'cache', CACHE_TEMPORARY);
+		    }
+		  }
+          break;
+      case 'user':
+          if (!isset($gmap_taxonomy_fields)) {
+		    if ($cache = cache_get('gmap_taxonomy_user_fields_data')) {
+		      $gmap_taxonomy_fields = $cache->data;
+		    }
+		    else {
+		      $gmap_taxonomy_fields = array();
+		      // Get all field info.
+		      $fields = field_info_fields();
+		      // Loop through to get the ones of field type taxonomy_term_reference.
+		      foreach ($fields as $field) {
+		        if ($field['type'] == 'taxonomy_term_reference' && isset($field['bundles']['user'])) {
+		          foreach ($field['bundles']['user'] as $user) {
+		            $gmap_taxonomy_fields[$user][] = $field['field_name'];
+		          }
+		        }
+		      }
+		      cache_set('gmap_taxonomy_user_fields_data', $gmap_taxonomy_fields, 'cache', CACHE_TEMPORARY);
+		    }
+		  }
+          break;
   }
   return $gmap_taxonomy_fields;
 }
@@ -335,6 +424,8 @@ function gmap_taxonomy_get_instances() {
  * @todo move this to GmapTaxonomyCRUDi class
  */
 function gmap_taxonomy_reassign_marker($tid, $deletion = FALSE) {
+
+// Update for node
   $nids = array();
   if ($deletion) {
     $result = db_query('SELECT nid FROM {gmap_taxonomy_node} WHERE tid = :tid', array(':tid' => $tid));
@@ -369,6 +460,37 @@ function gmap_taxonomy_reassign_marker($tid, $deletion = FALSE) {
   }
   // Clear cache to keep data updated.
   cache_clear_all('gmap_taxonomy_markers_data', 'cache');
+
+// Update for users
+  $uids = array();
+  if ($deletion) {
+    $result = db_query('SELECT uid FROM {gmap_taxonomy_user} WHERE tid = :tid', array(':tid' => $tid));
+	$terms = db_query('SELECT tid, marker FROM {gmap_taxonomy_term} WHERE tid = :tid',array(':tid' => $tid))->fetchAllKeyed();
+    foreach ($result as $user) {
+    	foreach ($terms as $tid => $marker) {
+			db_delete('gmap_taxonomy_user')
+		        ->condition('uid', $user->uid)
+		        ->execute();
+		}
+    }
+  }
+  else {
+   $result = db_query('SELECT uid FROM {gmap_taxonomy_user} WHERE tid = :tid', array(':tid' => $tid));
+   $terms = db_query('SELECT tid, marker FROM {gmap_taxonomy_term} WHERE tid = :tid',array(':tid' => $tid))->fetchAllKeyed();
+     foreach ($result as $user) {
+     	foreach ($terms as $tid => $marker) {
+			db_update('gmap_taxonomy_user')
+	        ->fields(array(
+	          'tid' => $tid,
+	          'marker' => $marker,
+	        ))
+	        ->condition('uid', $user -> uid)
+	        ->execute();
+		}
+    }
+  }
+  // Clear cache to keep data updated.
+  cache_clear_all('gmap_taxonomy_user_markers_data', 'cache');
 }
 
 /**
diff --git a/gmap_taxonomy.views.inc b/gmap_taxonomy.views.inc
index 3de3ed5..abdbcab 100644
--- a/gmap_taxonomy.views.inc
+++ b/gmap_taxonomy.views.inc
@@ -30,5 +30,25 @@ function gmap_taxonomy_views_data() {
     ),
   );
 
+  $data['gmap_taxonomy_user']['table']['group'] = t('Users');
+  $data['gmap_taxonomy_user']['table']['join'] = array(
+    'users' => array(
+      'left_field' => 'uid',
+      'field' => 'uid',
+    ),
+
+  );
+
+  $data['gmap_taxonomy_user']['marker'] = array(
+    'title' => t('Marker'),
+    'help' => t('The marker name GMap Taxonomy associates with the node.'),
+    'field' => array(
+      'handler' => 'views_handler_field',
+      'click sortable' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
   return $data;
 }
