I currently have D7 build with location nodes which I am filtering for a view. I am using custom markers with the use of a folder with my marker images added in a folder with the markers folder and a .ini file. I am trying to create a view with multiple location nodes in a map with GMap Markers.

So based on the way Taxonomy works now in Drupal 7, Taxonomy vocabularies are not assigned to nodes through taxomony, but through the content types with the addition of a Term field. Which is different from Drupal 6 and begs a question about how to create views maps with GMap Taxomony, Location nodes, and custom marker sets. So although you create the the GMap Vocabulary into your content type, the old GMap Marker field is not available in the node form, but is a choice in views, which make this somewhat confusing.

When creating with the GMap views style and using a Single Marker type, thinks went well and the map displayed as designed.

When creating the map using the marker field handling and selecting Node:Marker as the marker field I receive the following message with no map display.

* The view gmap_display has been saved.
* Debug:

'Exception: SQLSTATE[42S22]: Column not found: 1054 Unknown column \'gmap_taxonomy_node.vid\' in \'on clause\''

in views_plugin_query_default->execute() (line 1314 of /Users/vin/Sites/casaswingseven/sites/all/modules/drupal-contrib/views/plugins/views_plugin_query_default.inc).
* Debug:

'Exception: SQLSTATE[42S22]: Column not found: 1054 Unknown column \'gmap_taxonomy_node.vid\' in \'on clause\''

in views_plugin_query_default->execute() (line 1314 of /Users/vin/Sites/casaswingseven/sites/all/modules/drupal-contrib/views/plugins/views_plugin_query_default.inc).

So instead I tried to create the map using the marker field handling and selecting the GMap Taxonomy Term field as the marker field. The map reurned with no pins but not before a Javascript window appeared with the following message.

Request for invalid marker set 11!

With the message I believe appearing to come form icon.js.

I'm aware that this is still in dev and this functionality may still be a work in progress, but I just wanted to open this issue to either clarify if I am doing something wrong or clarify that documentation may be needed when this functionality comes into place in the D7 port.

Otherwise. Love the module. Keep up the good work!

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

casaswing’s picture

This issue adds a bit more clarity to my previous issue...

http://drupal.org/node/1054482

Which can be closed. I don't think this is a bug, but either functionality which is not there yet or a need for support to properly configure marker fields.

FYI, I am using Location 7.x-3.x-dev (as of 2/7/11), Node Locations 7.x-3.x-dev along with GMap 7.x-1.x-dev, GMap Location 7.x-1.x-dev, GMap Macro Builder 7.x-1.x-dev, and GMap Taxonomy Markers 7.x-1.x-dev

alfarovive’s picture

Subscribing. I'm in the same boat.

zabelc’s picture

I'm seeing the same thing

sebish’s picture

Subscribing.

elgandoz’s picture

me too!

Jānis Bebrītis’s picture

cannot get this working either, subscribe

rumblewand’s picture

subscribing

rumblewand’s picture

Should this thread be changed to a coding issue? I don't think it is functioning properly regardless of documentation.

skadu’s picture

I am also running in to this same issue. I did a very brief amount of digging and have run in to what I believe are two things contributing to this issue...I do not claim to have a full understanding of this, just saw everyone else having the same issue and wanted to drop in my thoughts:

The following is from gmap_taxonomy.module, and as noted in the code // @@@ PROBLEM -- $node->taxonomy doesn't exist anymore!. So this update never runs even when the function is called. This is probably what is leading to the empty table and calls to the wrong column. The call seems to be looking for vid, and even if this table where to update, there is still no vid, it seems to be set up to work with the nid.

The gmap_taxonomy_term table has the correct relationship between terms and markers, this just needs to be carried over into the gmap_taxonomy_node table, which then links the node, to its term, and its marker.

/**
 * Implement hook_node_update().
 */
function gmap_taxonomy_node_update($node) {
  // Remove the marker association if present. We'll readd it later if it's
  // still applicable.
  db_delete('gmap_taxonomy_node')
    ->condition('nid', $node->nid)
    ->execute();

  $status = variable_get('gmap_taxonomy_vocabs', array());
  $marker = '';
  // @@@ PROBLEM -- $node->taxonomy doesn't exist anymore!
  if (isset($node->taxonomy) && is_array($node->taxonomy)) {
    foreach ($node->taxonomy as $voc => $terms) {
      if (isset($status[$voc]) && $status[$voc]) {
        $t = $terms;
        if (!is_array($t)) {
          $t = array($t);
        }
        foreach ($t as $term) {
          $result = db_query('SELECT marker, tid FROM {gmap_taxonomy_term} WHERE tid = :tid', array(':tid' => $term));
          if ($m = db_fetch_object($result)) {
            $marker = $m->marker;
            $markertid = $m->tid;
          }
        }
      }
    }
    if (!empty($marker)) {
      db_insert('gmap_taxonomy_node')
        ->fields(array(
          'nid' => $node->nid,
          'tid' => $markertid,
          'marker' => $marker,
        ))
        ->execute();
    }
  }
}

Like I said, no solution yet, just thoughts about the problem. If I am totally wrong feel free to let me know. I will be working on this a little bit in the near future to hopefully dig deeper and see if I can update this to work.

@rumbleweed I also believe this is a coding issue and not a documentation issue.

rumblewand’s picture

Component: Documentation » Code

I'm going to move it over into code if no objections.

casaswing’s picture

No objections whatsoever rumblewand. Thanks!

Thanks for the info. I'll look into the code myself to see if I can get this to work. Thanks

farald’s picture

I did a workaround on the problem with lacking taxonomy marker support.

In 'extended gmap' display type, you are able to display markers based on a field in the row.

Do this:

  1. Add a views PHP field (views php module) to the view, make it hidden.
  2. Set the field to display a marker value based on the other fields in the row ($row).
    Example: Under field value code, enter 'return "monday";'
  3. Then under extended gmap settings, set PHP field purpose to "Marker type".
  4. .. and then under marker handling, select "use marker field".

I found this very powerful, as you may override marker types on whatever custom conditions you may want.

lolmaus’s picture

Ah, this is a result of using a dev version. Subscribing.

PS Shouldn't broken functionality be categorized as a bug?

dan1eln1el5en’s picture

subscribing

rumblewand’s picture

Category: support » bug

true story - changed to bug report

casaswing’s picture

Thanks everyone,

Getting a better idea what is happening now. This does seem like a bug.

This seems like a good opportunity for me to submit my first patch. Been busy last week, but will try my best.

sogesan’s picture

ALTER TABLE `gmap_taxonomy_node` ADD `vid` INT NOT NULL

lolmaus’s picture

Hey sogesan #17,

now the view works without displaying an error. But all markers are default.

I'm displaying nodes of a certain node type. The node type is associated with a number of taxonomy vocabs. One of the vocabs is set to determine the marker. I've chosen different markers for each term in that vocabulary.

So how do i make my view display markers based on that vocabulary settings?

nonsie’s picture

sub

Digeridoo’s picture

FileSize
2.09 KB

Patch is correcting gmap_taxonomy_node_update() function which is called after node/revision/fields saving routines. So, we can get all node's taxonomy terms which is are markers. And then save terms and markers info into gmap_taxonomy_node table.

Befor

  $status = variable_get('gmap_taxonomy_vocabs', array());
  $marker = '';
  // @@@ PROBLEM -- $node->taxonomy doesn't exist anymore!
  if (isset($node->taxonomy) && is_array($node->taxonomy)) {
    foreach ($node->taxonomy as $voc => $terms) {
      if (isset($status[$voc]) && $status[$voc]) {
        $t = $terms;
        if (!is_array($t)) {
          $t = array($t);
        }
        foreach ($t as $term) {
          $result = db_query('SELECT marker, tid FROM {gmap_taxonomy_term} WHERE tid = :tid', array(':tid' => $term));
          if ($m = db_fetch_object($result)) {
            $marker = $m->marker;
            $markertid = $m->tid;
          }
        }
      }
    }
    if (!empty($marker)) {
      db_insert('gmap_taxonomy_node')
        ->fields(array(
          'nid' => $node->nid,
          'tid' => $markertid,
          'marker' => $marker,
        ))
        ->execute();
    }
  }

After

  $marker = db_select('taxonomy_index', 'ti');
  $marker->leftJoin('taxonomy_term_data', 'td', 'td.tid = ti.tid');
  $marker->leftJoin('gmap_taxonomy_term', 'gtt', 'gtt.tid = td.tid');
  $marker->addExpression($node->nid, 'nid');
  $marker->addExpression($node->vid, 'vid');;
  $marker->addField('gtt', 'tid');
  $marker->addField('gtt', 'marker');
  $marker->condition('ti.nid', $node->nid, '=');
  $marker->condition('td.vid', variable_get('gmap_taxonomy_vocabs', array()), 'IN');
  $marker->range(0, 1);
  db_insert('gmap_taxonomy_node')->from($marker)->execute();
TimelessDomain’s picture

Status: Active » Needs work

Did #17 & #20 , but still not working

Upon saving ANY node(with or without taxonomy markers enabled for the taxonomies applied to that node) i get

PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'tid' cannot be null: INSERT INTO {gmap_taxonomy_node} (tid, marker, nid, vid) SELECT gtt.tid AS tid, gtt.marker AS marker, 11 AS nid, 51 AS vid FROM {taxonomy_index} ti LEFT OUTER JOIN {taxonomy_term_data} td ON td.tid = ti.tid LEFT OUTER JOIN {gmap_taxonomy_term} gtt ON gtt.tid = td.tid WHERE (ti.nid = :db_condition_placeholder_0) AND (td.vid IN (:db_condition_placeholder_1, :db_condition_placeholder_2, :db_condition_placeholder_3, :db_condition_placeholder_4)) LIMIT 1 OFFSET 0; Array ( [:db_condition_placeholder_0] => 11 [:db_condition_placeholder_1] => 1 [:db_condition_placeholder_2] => 0 [:db_condition_placeholder_3] => 0 [:db_condition_placeholder_4] => 1 ) in gmap_taxonomy_node_update() (line 175 of /www.example.com/web/content/sites/all/modules/gmap/gmap_taxonomy.module).

perhaps my problem is from using table prefixes in the database. Shouldn't "INSERT INTO {gmap_taxonomy_node}" include the table prefix as "INSERT INTO {prefix_gmap_taxonomy_node}" ?

Wouter Van den Bosch’s picture

I'm getting the same message as @TimelessDomain, even though I'm not doing the whole db prefix thing, so it shouldn't be related to that.

Can you have a look again at your patch to see what's up? I'd be glad to provide more info if needed.

Wouter Van den Bosch’s picture

And thanks for the tip Hamaldus (#12) !

I'm using the same approach in a simple GMap style view now, because I am using the actual location fields. Apart from that, I'm now fetching the marker type via a custom PHP function, which I call in the excluded PHP field.

Great thinking from your part! Thanks for sharing.

Syph’s picture

hi Wouter Van den Bosch,

Can you please share your custom php function so that I may adapt it to my site?

Regards,

Aaron

webthingee’s picture

+1
Full error when trying to use taxonomy markers.

Debug:
'Exception: SQLSTATE[42S22]: Column not found: 1054 Unknown column \'gmap_taxonomy_node.vid\' in \'on clause\''
in views_plugin_query_default->execute() (line 1380 of /home/public_html/xxx/sites/all/modules/views/plugins/views_plugin_query_default.inc).

zabelc’s picture

Priority: Normal » Major

I've tried the same tactic as Wouter Van den Bosch, but the non-extended GMap view doesn't appear to use the value of the field.

Has anyone actually gotten "Marker Fields" to work? I've even tried having my php field hard-coded to 'drupal' (also 'Drupal', also a numeric constant), and I *always*l get the "fall-back marker".

I've upped the priority to major because there appears to be no work-around for this.

dafeder’s picture

I'm having the same problem. I added a marker field, it is requesting a marker set with the correct name, which is defined in an .ini file. It LOOKS to me like this set is being called correctly in gmap_makers.js after rebuilding the marker cache, although that file is hard to understand... However, this is not, I don't think, anything DB related, so maybe this is a different issue.

dafeder’s picture

I have gotten this working now - I had a problem in my .ini file. Markers working as expected!

zabelc’s picture

@dafeder, did you have to change anything in the standard .ini file? What text are you putting in your field? Are you just somehow including the marker set?

E.g. if I wanted to use the small.ini marker set and the Small Red marker specified below, what should my field contain?
[small red]
name = "Small Red"
sequence = "red.png"

Thanks!

dafeder’s picture

Hi zalbec. Here is how I did it: I added a bunch of marker images to the marker directory. I then created a new ini file called "placetypes.ini" and added a marker set for each image. For instance, I have an image of a plate for restaurants, so I have:

[plate]
name = "plate.png"
sequence = "plate.png"

(I think the name could probably just be "Plate" there)

Now, my content type for locations has a term reference field for a "place type" vocabulary. The terms in THAT vocabulary have a custom field, "icon", which is a text field with a select widget, with an allowed value for each of my marker sets (for instance, all food-related place types get a value of "plate" in this field).

In my view, I use relationships to load the "icon" field for each location. Then in the style settings for my gmapextended view type, I set that field to be "marker type". After re-generating the marker cache in gmap settings, it worked.

My case is a little more complicated because I have several taxonomy terms sharing the same icon. The great thing about how this works is that it is very flexible, you can use any views field to define your markers, not necessarily just taxonomy.

zabelc’s picture

dafeder, many thanks for the detailed description.

Unfortunately, I don't think this works for the non-extended GMap view.

After setting my default marker to something else, I've tried creating a simple Custom Text type field which always contains the word 'drupal', but I can't seem to get the normal drupal marker to appear: only my separate default one.

dafeder’s picture

zabelc - why can't you use the extended style?

Todd Young’s picture

What the crap?!? I tried the PHP field trick in the non-extended gmap and it worked - did I miss something?

zabelc’s picture

@dafeder, I'm using a Location Field (i.e. Location CCK), so my node/entity doesn't have a Latitude/Longitude field to plug into the GMap Extended properties, rather my field has a "sub-field".

@Todd Young, how are the nodes in your view set up? do they have locations directly, or are you using location fields?

dafeder’s picture

zabelc - I'm using location field as well. I load latitude and longitude as separate fields (displaying them in decimal degrees).

Todd Young’s picture

OK I take it back. I can do various tricks with PHP to make the markers change, but the problem I'm having is that no matter how I try to refer back to the node (by using taxonomy or a dedicated marker field) the returned value is always the Node ID and never what you would expect it to be (a string, array, taxonomy ID, anything!)

I think there's something seriously broken in the relationship between location and content revision.

Todd Young’s picture

I have a temporary fix until views relationships to taxonomy fields actually bring back the correct values of related fields.

Put the following into the VALUE php code of a Global PHP field:

$sql = 'SELECT field_loc_marker_value FROM field_revision_field_loc_marker WHERE revision_id = ' . $row->field_loc_marker;
$marker = db_query($sql)->fetchField();
if (empty($marker)) $marker = 'small brown';
return $marker;

...where field_loc_marker is a list field in the nodes that references marker type by exact names. You do not need anything in the output php code.

It looks strange to be selecting the same value that I am providing in the WHERE clause, normally you'd ask why the SELECT statement is required if you already know the value. But keep in mind that $row->field_loc_marker is incorrectly returning the node ID. Plus you have the added benefit of this automatically breaking when the underlying problem is fixed, ie. $row->field_loc_marker starts returning the correct value.

This is probably horrifyingly inefficient, but so far it's the only way I've found to call up varying markers by node and/or taxonomy.

dafeder’s picture

Todd Young: I highly recommend something more along the lines of what I describe in #30. It's not as tidy as it should be but once it's set up, it works fairly painlessly without having to run a new db query for each row of your view, which believe me will slow your view down noticeably if you have a significant number of results.

rrom’s picture

I have tried all things above. Works only with php views field and static marker like "small brown" from #37 but not with marker assigned to taxonomy term.

Subscribing.

rickmartin’s picture

Also have this issue. Subscribed.
I keep forgetting how much of a headache researching drupal problems is...

rickmartin’s picture

@hamaldus, Is there anyway that you/someone who has gotten this to work could elaborate on #12 a little?
(I'm not a developer, just someone who -- regrettably -- chose drupal to try to make a map with exposed filters)

kwseldman’s picture

Seconding @rickmartin's request to @hamaldus. Not sure how to state the allowed values in the field. I'm trying

small red|small red marker for current projects
small blue|small blue marker for former projects

and getting an error - undefined marker set.

stanley78’s picture

33 weeks... the only issue prevents me from switching to D7... help! :)

Digeridoo’s picture

Status: Needs work » Needs review
FileSize
2.08 KB

I corrected the patch from #20. Problem was when taxonomy term doesn't have a marker. In this case, left join operator is worked incorrect in query. I just replace it to join operator. Please, test it.

  $marker = db_select('taxonomy_index', 'ti');
  $marker->join('taxonomy_term_data', 'td', 'td.tid = ti.tid'); // leftJoin to join
  $marker->join('gmap_taxonomy_term', 'gtt', 'gtt.tid = td.tid'); // leftJoin to join
  $marker->addExpression($node->nid, 'nid');
  $marker->addExpression($node->vid, 'vid');;
  $marker->addField('gtt', 'tid');
  $marker->addField('gtt', 'marker');
  $marker->condition('ti.nid', $node->nid, '=');
  $marker->condition('td.vid', variable_get('gmap_taxonomy_vocabs', array()), 'IN');
  $marker->range(0, 1);
  db_insert('gmap_taxonomy_node')->from($marker)->execute();

And don't forget about this:
ALTER TABLE `gmap_taxonomy_node` ADD `vid` INT NOT NULL

juhaniemi’s picture

@44 Patch was malformed, so I re-formatted patch based on Creating a patch instructions.

I didn't test it though.

evets33’s picture

This patch doesn't work for me :-(

stanley78’s picture

yep. gmap_taxonomy_node still hasn't any records.

evets33’s picture

yes stanley78, the same problem :-(

The module GMAP is still updated for D7 ?

Steven.Pescador’s picture

Subscribing.

Aldus’s picture

Same here. Choosing taxonomy markers in a view give this error:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'gmap_taxonomy_node.vid' in 'on clause'

Using D7 and a location cck

smitty’s picture

Choosing taxonomy markers in a view results in this error:

'Exception: SQLSTATE[42S22]: Column not found: 1054 Unknown column \'gmap_taxonomy_node.marker\' in \'field list\''

in views_plugin_query_default->execute() (Zeile 1386 von E:\Webserver\wamp\www\drupal\sites\all\modules\views\plugins\views_plugin_query_default.inc).

Using D7, GMap Location, Node Locations and GMap Taxonomy Markers.

Same problem with and without the patch from #45.

andrea.cavattoni’s picture

Same here... :-(

beauz’s picture

Same as #51, subscribing.

andrea.cavattoni’s picture

i'll upload a working gmap version in a cople of days..

evets33’s picture

Hello cavax
Please, have you progress in your work ?

andrea.cavattoni’s picture

ok there we go, taxonomy is working and also the php macros

Let me know if it works for all

http://www.de-signtn.it/gmap.tar.gz

evets33’s picture

I've tested that but it doesn't work for me :-(

In my taxonomy, i have in GMap Marker : I have Small Red

In database, i have in gmap_taxonomy_term
Textes complets tid marker
Modifier Effacer 556 small red
556 is my tid which is real present in taxonomy_term_data

I flushed the cache... But i have the default google icon :-(

indaloweb’s picture

The problem persist with the cavax gmap module

andrea.cavattoni’s picture

FileSize
929 KB

Hope this one is working, i've attacehd also the extinfowindow.,

Let me know

vchukhantsev’s picture

Work's for me. But you forgot comment die() in gmap.module in function template_preprocess_gmap_view_gmap.

indaloweb’s picture

nothing....
My taxonomy view doesnt show the location coordinates in gmap mode, and I can't add the field in html list for example. I think that there is a problem between the taxonomy location and the view.
The message persist... SQLSTATE[42S22]: Column not found: 1054 Unknown column 'latitude' in 'field list'

vchukhantsev’s picture

Hmmm... create new taxonomy dict with custom markers and test again. Now gmap markers don't work, if i understand correctly some hook must add record to gmap_taxonomy_node table, but this doesn't happen.

Try to debug this, found bad query in gmap_taxonomy.module in function gmap_taxonomy_node_update near 160 line. It works with one dict, but don't work with other.

vchukhantsev’s picture

//  $s = "SELECT gtt.tid AS tid, gtt.marker AS marker, :nid AS nid, :vid AS vid FROM {taxonomy_index} ti INNER JOIN {taxonomy_term_data} td ON td.tid = ti.tid INNER JOIN {gmap_taxonomy_term} gtt ON gtt.tid = td.tid WHERE (ti.nid = :nid) AND (td.vid IN (:vocabularies))";

$q = "SELECT gtt.tid AS tid, gtt.marker AS marker, $node->nid AS nid, $node->vid AS vid FROM {taxonomy_index} ti INNER JOIN {taxonomy_term_data} td ON td.tid = ti.tid INNER JOIN {gmap_taxonomy_term} gtt ON gtt.tid = td.tid WHERE (ti.nid = $node->nid) AND (td.vid IN ($vocabularies))";

  $r = db_query($q);

Quick dirt fix work's for me. I can't explain wtf. Don't have much experience with Drupal, m.b. somebody explain me this.

Atomox’s picture

Subscribing.

ditcheva’s picture

Subscribing. Unfortunately, #12 doesn't work for me either (though I appreciate the detailed description). :-(

beauz’s picture

I finally managed to sort my problems out with getting custom taxonomy markers working.
Here is some tips:

1. Make sure to add the vid field to the gmap_taxonomy_node table as in #22
ALTER TABLE `gmap_taxonomy_node` ADD `vid` INT NOT NULL

2. I used the version of the module cavax posted in #56. This has important changes in the gmap_taxonomy.module file in the function gmap_taxonomy_node_update($node) ~line 159

3. Resaved each node that needed a custom marker which seemed to add the right entries into the gmap_taxonomy_node table.

4. Made sure the gmap view settings were set to "By term" under marker handling

5. Made sure the taxonomy terms themselves had a custom marker select under the term edit page

Hopefully this helps someone as it took me nearly a whole day to sit down with all this code and properly understand it and get it working.

alexio2170’s picture

@beauz Hi, I'm following your way but now I have a strange white page with "Here".
Did you install the #22 release from scratch or did you just override old files?
Of course I've followed steps 1 to 5...
Many thanks.

beauz’s picture

Ah yes there was some debug code left in the gmap module cadax posted. If you do a search through the code you should be able to find the spot where it has
print("Here.");

Just comment out those lines.

alexio2170’s picture

great, it's working now!

alexio2170’s picture

actually there 2 working workaround solutions
http://drupal.org/node/1057922#comment-5698944
http://drupal.org/node/1054482#comment-4368976 (just tried)
many thanks

webcultist’s picture

cavax could you please also provide the last patch you did for the downloadable version you linked? I have already a patched version (http://drupal.org/node/1459606) and need to combine them.
Thanks a lot!

andreas hagerman’s picture

Can you specify more precisely where to comment out? I can't find it and all I get on my view is "Here". Thanks

jday’s picture

I followed all the steps in #66 but the markers are still all using the default color.

Macronomicus’s picture

Same as #73
Perhaps the php field option is the only way?
I've not tried that yet.

jday’s picture

After re-saving some nodes I am now seeing the various marker colors I've selected for the terms, however, they are not displaying the correct color per term, it seems random. For example, term A is set to be blue, and term B set to be red...some of the term A node markers are blue but some are red! And some of the term B markers are correct but some are blue! I have 7 different terms, each with a different color but the colors are not matching correctly...

leda.ch’s picture

I just wanted to create a gmap view based on a cck location field in my nodes and another cck taxonomy-field therein - which obviously not works right.

Also I just didn't want to apply patches or such, so I ended up with creating my own module for a individual q&d solution in this case:

1. Adding this field is necessary:
ALTER TABLE `gmap_taxonomy_node` ADD `vid` INT NOT NULL DEFAULT 0

2. New module, coding hook_node_update, just copied over from the gmap_taxonomy-module:

function myModule_node_update($node) {

  //----------------------	

  if ($node->type == 'myNodeType') {
    // Remove the marker association if present. We'll readd it later if it's
    // still applicable.
    db_delete('gmap_taxonomy_node')
      ->condition('nid', $node->nid)
      ->execute();

    $marker = '';

    foreach ($node->field_myCCKField['und'] as $idx => $tids) {
 	  $tid = $tids['tid'];
      $result = db_query('SELECT marker, tid FROM {gmap_taxonomy_term} WHERE tid = :tid', array(':tid' => $tid));

      foreach ($result as $m) {
        $marker    = $m->marker;
        $markertid = $m->tid;
      }
    }

    if (!empty($marker)) {
      db_insert('gmap_taxonomy_node')
        ->fields(array(
          'vid' => $node->vid,
          'nid' => $node->nid,
          'tid' => $markertid,
          'marker' => $marker,
        ))
        ->execute();
    }
  }

  //----------------------	

}

This at least keeps node and one term in sync.

3. The contents in gmap_taxonomy_node are missing yet, so insert them with a bulk update, p.e. via un/publishing nodes.

Now views works as expected.

kiwimind’s picture

It would seem that following the steps as outlined in #66 doesn't quite work as expected.

If you create a new node, the default marker is used. If you then go straight back in and resave this node without changing anything, the correct taxonomy based marker is then used.

I have now, somehow, removed all of the location details from both the display nodes and the map popups. Not quite sure what I've done as everything should be back as it was... Back to the drawing board.

Slovak’s picture

I replaced parts of #76 and put that straight into the gmap_taxonomy.module - it is finally saving info to gmap_taxonomy_node even though I used my specific CCK field name in the code. Would like to see it make back into the module soon.

dmegatool’s picture

Just tried the taxonomy module to figure it doesn't work. So what's the solution ? I'm not using any cck field so the #76 seems to confuse me. Wouldn't know that to change. #66 make a reference to #56 which gives a 404... I just want to assign a taxonomy term to a node so that the marker is based on it.

Is the "Use marker field" option work ? How are we suppose to use this option ? I tried to supply data with a taxonomy term named the same as my marker but I guess that's not what it's looking for.

victoriachan’s picture

Version: 7.x-1.x-dev » 7.x-2.x-dev
FileSize
4.89 KB

I've created a patch to fix the problem in gmap_taxonomy_node_update() and gmap_taxonomy_views_data().

gmap_taxonomy_node_update() needed to get at the taxonomy_term_reference fields in a different way since in D7 $node->terms does not exist anymore.

gmap_taxonomy_views_data() needed to use nid instead of vid as there is no vid in the gmap_taxonomy_node table.

The patch is made for 7.x-2.x-dev

Please review.

Thanks!

liminu’s picture

FileSize
1.53 MB

My solution:
1) do this query:
ALTER TABLE `gmap_taxonomy_node` ADD `vid` INT NOT NULL DEFAULT 0
2)remove primary key from table gmap_taxonomy_node
3)use the patched attachment
4)resave all the node.
5)enjoy! :-)

P.S.
if you use an attachment remember to set Ajax to yes, Inherit to yes and expose the same filter (with the same default value) in the block and in the attachment.
In the settings of gmap remember to set "Marker handling" to "by term".

gillarf’s picture

#66 worked for me - thanks @beaux and @cavax

If you want to update loads of existing nodes with new terms (as i did) use views bulk operations. Use the 'Change entity value' action, applied to the taxonomy reference.

This also saves all the nodes again, which helps with step 3.

podarok’s picture

Status: Needs review » Fixed

#80 looks good
commited to 7.x-2.x and 7.x-1.x branches

thanks!

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.