Jump to content

Map Marker Map


ryan

Recommended Posts

  • 2 weeks later...

Hmm, I'd like to use many of these in a repeater. Or actually, 2 levels deep: MapMarker in a repeater in a repeater. (Think a travel journal with 2 or 3 locations for 14 days)

The MapMarker Map is only displayed in the editor when the inputs are expanded upon load. When I collapse one repeater or another (visibility or AJAX) then the map stays empty. This means my editor will be confusing, very long and creating new entries will require saving.

Is there an easy way to fix this?

Thanks
Martin

Link to comment
Share on other sites

@adrian Thank you, that was not the right solution. But it made me investigate in the right place:

InputfieldMapMarker's init function is never called. At the bottom, InputfieldMapMarker.js says:

$(document).ready(function() {
    $(".InputfieldMapMarkerMap").each(function() {
        var $t = $(this);
        InputfieldMapMarker.init($t.attr('id'), $t.attr('data-lat'), $t.attr('data-lng'), $t.attr('data-zoom'), $t.attr('data-type')); 
    }); 
}); 

When the $(document) is ready() there are no $(".InputfieldMapMarkerMap")s yet, as they will be AJAX-loaded later.

So I guess we need an event that is fired after each successful AJAX call, so we can InputfieldMapMarker.init() all those Maps which haven't been initialized before. Is there a way to register a listener for such events?

Link to comment
Share on other sites

  • 3 weeks later...

Good day!

Really sorry if this has been answered - I really tried to read through 17 pages of this topic, but I could easily miss something.

I need to implement map re-center on window resize. I found this tip among others, but I just do not know where to put the code). I generate markup in php the standard way like this:

<?php
	echo $map->render($page, 'map', array('height' => '400px'));
?>

Please point me to the place I can put all those event listeners from the Google maps API.
 

Link to comment
Share on other sites

Ok, I think I got this figured out.

When you call something like

$map->render($page, 'map', array('id' => 'jsMap',));

with the id option the wrapper MarkupGoogleMap js object is created with the same name as id provided.

The google maps object is accessible as its map property, like this:

jsMap.map;

with all the good stuff from the API at your disposal.

  • Thanks 1
Link to comment
Share on other sites

I hook into Pages::saved to detect field changes, but this Fieldtype never comes up in the $changes = $event->arguments[1] array. Any idea? This should behave like any other field, so if you move the marker it is a change, right?

Link to comment
Share on other sites

  • 3 weeks later...

Just installed PW and GoogleMapMarkup(didn't work with PW and google map for a while) and in admin map fields works fine, I have added google key... But in front end when i render map I got error Error: Please add the maps.google.com script in your document head.

I have added script to header, and everything else on the right place. But still gor error, also I have error about google namespace:"MarkupGoogleMap is not a function", before i have error: google map initMap is not a function. So I changed function in map url to MarkupGoogleMap <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBfuPL8-V9WoZBU8fZ26NuP7I9SuZoqYmA&callback=MarkupGoogleMap" async defer></script>

I think that this has something to do with google api. Is someone have simillar problem and maybe some answer to errors?

 

Link to comment
Share on other sites

I have the module installed and it seems to be working correctly. On the output to a page I have the map generating as expected. I do have a question and it's more of an annoyance that is probably an easy fix. Should the map have the following text output before the map is generated? " MarkupGoogleMap " I'd really prefer not to see this markup displayed on the page.

Gmap.png

Link to comment
Share on other sites

  • 2 weeks later...
3 hours ago, CaelanStewart said:

I've found a bug in this module, if you set the field's settings to be closed when populated, you must trigger a resize event in order for the map to render when the field is expanded after the field has been populated and saved.

Check out the top two PR's: https://github.com/ryancramerdesign/FieldtypeMapMarker/pulls

Hopefully the second one down will take care of it. I have used that for when this field is in a fieldsettab and it works.

Link to comment
Share on other sites

  • 1 month later...

I'm calling MapMarkers from 'place' pages to get a Google Map with all places, using this code:

	$map = $modules->get('MarkupGoogleMap'); 
	$places = $pages->find("template=places, MapMarker!=''"); 
	echo "<br><br>" . $map->render($places, 'MapMarker', array('height' => '400px', 'zoom' => '7')); 

It works fine in PW 2.7.2. It doesn't work in PW 3.0.36. The map starts loading then gives an error "This page didn't load Google Maps correctly. See the JavaScript console for technical details", that says "Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead". In the admin interface the map loads fine. Any ideas to make it work?

Link to comment
Share on other sites

For those people who cannot get this to work in PW3, the instructions say to put this in your head:

<script type='text/javascript' src='https://maps.googleapis.com/maps/api/js?sensor=false'></script>

This actually needs to be:

<script src="https://maps.googleapis.com/maps/api/js?key=<?= $modules->get('FieldtypeMapMarker')->get('googleApiKey') ?>"></script>

Or however you like to include your JS files. The sensor=false is no longer needed, but the API key is. Seemed to work for me, I havent had time to investigate the inner workings of the module to see if this should be done or not but is just a bug.

Happy mapping.

  • Like 4
  • Thanks 3
Link to comment
Share on other sites

  • 2 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...