I've just discovered the parse paramter which will let me get the bits of data I need to create my own javascript for creating markers an modal windows.
https://www.objectivehtml.com/google-maps/fieldtype
Use it like so...
{exp:channel:entries channel="conf"}
{conf_map parse="markers"}
{markers}
{marker:latitude}, {marker:longitude}
{/markers}
{/conf_map}
{/exp:channel:entries}
UPDATE:
I've got this working now so here's my solution in case anyone else might need to do a similar thing.
Note: This site is using Foundation Reveal to create modal popovers.
Basically what I did was use the markers tag pair to loop through each marker in the field and output it's own bit of javascript to generate a map marker and attach an event listener which triggered a modal.
To make life easy, each run through the loop also creates a block of modal HTML which gets shown when the marker is clicked. Less efficient but easier than trying to pass data into the modal.
<script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=true&key=&language=en"></script>
<div id="map" class="" style="width:100%;height:400px"></div>
<!-- First create the map itself -->
<script type="text/javascript">
google.maps.visualRefresh = true;
var map_options = {zoom: 12, center: new google.maps.LatLng(0,0), mapTypeId: google.maps.MapTypeId.ROADMAP, scrollwheel: false};
var map_canvas = document.getElementById("map");
var map_map = new google.maps.Map(map_canvas, map_options);
var map_bounds = new google.maps.LatLngBounds();
var map_markers = [];
var map_window = {};
var map_windows = [];
var map_responses = [];
var map_html = [];
var map_waypoints = [];
var map_regions = [];
var map_geocoder = new google.maps.Geocoder();
var map_directionsService = new google.maps.DirectionsService();
var map_directionsDisplay = new google.maps.DirectionsRenderer({map: map_map});
var map_clusterOptions = {maxZoom: 0, gridSize: 0, styles:[]};
var map_cluster = new MarkerClusterer(map_map, map_markers, map_clusterOptions);
</script>
<!-- Now create the markers
All marker data is stored within the GMap4EE field type in a single entry
So we first grab the entry, then output the field and within that use the {markers} tag pair to loop through each one and create the Javascript needed
-->
{exp:channel:entries channel="conference"disable="member_data|pagination|categories|category_fields"}
{conference-venue-map parse="markers"}
{markers}
<!-- Create a marker on the map -->
<script type="text/javascript">
var index = map_markers.length;
map_markers[index] = new google.maps.Marker({
map: map_map,
position: new google.maps.LatLng({marker:latitude},{marker:longitude}),
icon: "{marker:icon}"
});
map_markers[index].entry_id = {embed:entry};
map_markers[index].index = {marker:count};
map_bounds.extend(new google.maps.LatLng({marker:latitude},{marker:longitude}));
if (index > 0) {
map_map.fitBounds(map_bounds);
} else {
map_map.setCenter(map_bounds.getCenter());
map_map.setZoom(map_options.zoom);
}
(function () {
var obj = map_markers[index];
google.maps.event.addListener(obj, 'click', function(e) {
var modal = '#markermodal'+obj.index;
$(modal).foundation('reveal','open');
});
})();
</script>
<!-- Create a modal window for this marker -->
<div id="markermodal{marker:count}" class="reveal-modal small">
<h1>{marker:title}</h1>
<p>{marker:formatted_address}</p>
{marker:content}
<a class="close-reveal-modal">×</a>
</div>
{/markers}
{/conference-venue-map}
{/exp:channel:entries}