Hi, all
Please consider the following code snips as returning my desired
infoWindow 'Click' event behavior:
...
var markerWindowContent = customAction(row) ;
google.maps.event.addListener(featureMarker, 'click',
function(event) {
// first close any currently open infoWindow
if (!isEmpty(layerWindow.getContent())) {
layerWindow.close();
}
layerWindow.setContent(markerWindowContent);
layerWindow.setPosition(coordinate) ;
// test for streetView
if (!campusViewFlag) {
layerWindow.open(map);
} else {
layerWindow.open(campusView);
}
// And add a listener to ensure the map is centered on the
feature coordinate when closing the infoWindow
// ** note this is inside the click listener, otherwise the
markerWindow is undefined so this listener barfs.
google.maps.event.addListener(layerWindow,'closeclick',
function() {
current_loc = coordinate ;
clickFlag = true ;
resetZoomAndCenter();
clickFlag = false ;
});
});
function customAction(dataRow) {
var builtInfoWindow ;
switch (dataRow[13]) {
case "clickthrough":
var open_link = window.open('','_top');
open_link.location=dataRow[11];
builtInfoWindow = dataRow[0] ;
break ;
default:
builtInfoWindow = "<div id='smallpopup' class='smallpopup'><div
id='smallpopup_title' class='smallpopup_title'>" ;
builtInfoWindow = builtInfoWindow + dataRow[0] + "</div>";
builtInfoWindow = builtInfoWindow + "<div id='smallpopup_description'
class='smallpopup_description'>" + dataRow[1] ;
builtInfoWindow = builtInfoWindow + "<br /><a href='" + dataRow[11] +
"'>" + dataRow[12] + "</a>";
builtInfoWindow = builtInfoWindow + "<div></div>" ;
}
return builtInfoWindow ;
}
The first is the usual event handler. The second determines what the
viewer will see. The intent is if dataRow[13], where dataRow is a row
of data from a Fusion Table extract, contains something, the click
behavior will be something other than the standard infoWindow. In
this case, 'clickthrough' should send the viewer directly to a link
stored in dataRow[11].
Further, I call the customAction function from two places; a set of
data directly from FusionTables, and a set of data from GViz to allow
me custom markers. Either way, the same code gets called for creating
the click handler action.
When I create the handler for a data row from Fusion Tables, it works
as expected, and transfers windows when clicked. But, when I create
the handlers for the GViz markers, it executes the window transfer on
the handler creation. Same code, same passed data structure, I think,
but different results.
Anybody have an idea why?
and if you need the map page, it's
https://aledev.boisestate.edu/joegawron/campusmap/TestMap.html.
Be warned the code sucks to read.
thanks,
Joe
--
You received this message because you are subscribed to the Google Groups
"Google Maps JavaScript API v3" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-maps-js-api-v3?hl=en.