ryan

Map Marker Map

Recommended Posts

On 2017-06-19 at 1:35 AM, Jozsef said:

The same issue. Running PW 3.0.61 and Map Marker 2.0.6 worked just fine. After upgrading to 2.0.9 and entering my API key I get the above error to any address I try.

 

On 2017-06-01 at 11:45 PM, Arcturus said:

I'm having an issue in PW 3.0.62 where the module will only geocode an address when I manually click the checkmark between address and lat/lng off/on when editing the page within the admin. Based on what I've read here, it seems only the client-side geocoder is working?

Additional details:

  • I have both Google Maps and Google Places APIs working without issue on the front-end and have added my Maps key to the module's configuration
  • My MapMarker-based field, "map", has a MapMarker: Error geocoding address notification and I can't find any elaboration
  • Neither API has any issues with my address formatting/default address, with an example being 5 Bloor Street, Toronto, ON M4W 3T3
  • My addresses are mapping properly when I play with the checkbox (status goes from UNKNOWN to OK)
  • I can't trigger the geocoding via the API

Any ideas?

 

 

Hi @Arcturus and @Jozsef,

 

Did you find a solution for this issue? I am running  3.0.84 and am having the same problem.

//Jasper

Share this post


Link to post
Share on other sites
On 9/24/2017 at 9:30 PM, PWaddict said:

To always display the map at the center even if the browser resized or the full screen button pressed just use the below function:


google.maps.event.addDomListener(window, 'resize', function() {
		var center = map.getCenter()
		google.maps.event.trigger(map, "resize")
		map.setCenter(center)
	});

 

The above function that I posted few months ago it's working perfect for Chrome, Firefox & Opera.

On IE11 it's partial working. If the map's full screen button pressed the map is no more centered. On the browser resize is working properly. Anyone knows how to fix this?

Share this post


Link to post
Share on other sites

I am really stuck here, the map was working fine a few weeks ago but now the address will not geocode automatically, this is a problem as I could have multiple users adding addresses through the api. I have tried adding $p->trackChange('map'); and similar but everytime I have to go in and click on the address field and then click out of it and it works. Any suggestions?

While I am here, how do I get the map markers to not link to a page when someone clicks them.

Share this post


Link to post
Share on other sites

Hello, 

i have 2 different domains for one page. 
In one domain i can see the map markers in other it comes an error. 
 

Google Maps API error: MissingKeyMapError https://developers.google.com/maps/documentation/javascript/error-messages#missing-key-map-error

I have generated an standart Api key 
dont understand why it doesnt works 

the same key also works for me on localhost skyscrapers profile too 

 

Share this post


Link to post
Share on other sites

The Geocode is returning some results in local script - ie,  Japanese is like -  和歌山県.  Is there a way to have it return English?  I know if I search the same place in Google Maps it returns the English equivalent.  I tried adding language=en to the URL in MapMarker.Php but that didn't work.

 

Thanks,

Heather

Share this post


Link to post
Share on other sites
On 14/12/2017 at 2:14 PM, formmailer said:

 

Hi @Arcturus and @Jozsef,

 

Did you find a solution for this issue? I am running  3.0.84 and am having the same problem.

//Jasper

The only solution I've found is to downgrade the MapMarker module to 2.0.6, I believe. That's the last working version for me.

Share this post


Link to post
Share on other sites

Hi,

I'm trying to display the title of a page on the map but I can get it.

Ideally I want to display both $page->lieu->title and page->map_lieu->adress.

I couldn't find the way to write it. The only one working is 'lieu' but it display only id page. Can I use a variable in the array?

        'markerTitleField' => 'lieu',   // $page->lieu->title  ??

Thanks

Mel

Share this post


Link to post
Share on other sites

Not sure if anyone is interested, but I just extended this to support address component fields. Now you can enter the various address components individually and it will automatically populate the final combined address field and geocode the address to lat/long.

image.thumb.png.622315b1d549731b233fe3be3e8a1995.png

I wanted this so I could grab the individual components for displaying a business address in a specific format, rather than relying on what the site editor entered into the combined address field.

You can of course call the components like this:

$page->address->street
$page->address->additional
$page->address->city
$page->address->state
$page->address->postcode
$page->address->country

These are in addition to the existing:

$page->address->address // the combined version
$page->address->lat
$page->address->lng
$page->address->zoom

Is anyone interested in this version? Not sure if @ryan would accept a PR or not?

 

  • Like 6

Share this post


Link to post
Share on other sites
1 hour ago, adrian said:

Not sure if anyone is interested, but I just extended this to support address component fields. Now you can enter the various address components individually and it will automatically populate the final combined address field and geocode the address to lat/long.

image.thumb.png.622315b1d549731b233fe3be3e8a1995.png

I wanted this so I could grab the individual components for displaying a business address in a specific format, rather than relying on what the site editor entered into the combined address field.

You can of course call the components like this:


$page->address->street
$page->address->additional
$page->address->city
$page->address->state
$page->address->postcode
$page->address->country

These are in addition to the existing:


$page->address->address // the combined version
$page->address->lat
$page->address->lng
$page->address->zoom

Is anyone interested in this version? Not sure if @ryan would accept a PR or not?

 

I would use it

  • Like 1

Share this post


Link to post
Share on other sites
1 hour ago, adrian said:

Not sure if anyone is interested, but I just extended this to support address component fields. Now you can enter the various address components individually and it will automatically populate the final combined address field and geocode the address to lat/long.

image.thumb.png.622315b1d549731b233fe3be3e8a1995.png

I wanted this so I could grab the individual components for displaying a business address in a specific format, rather than relying on what the site editor entered into the combined address field.

You can of course call the components like this:


$page->address->street
$page->address->additional
$page->address->city
$page->address->state
$page->address->postcode
$page->address->country

These are in addition to the existing:


$page->address->address // the combined version
$page->address->lat
$page->address->lng
$page->address->zoom

Is anyone interested in this version? Not sure if @ryan would accept a PR or not?

 

Too late for me since I did that in my /ready.php. But would certainly use it in another project! ;-)

Share this post


Link to post
Share on other sites
1 hour ago, mel47 said:

Too late for me since I did that in my /ready.php.

I am curious how you handled it in ready.php - did you create the additional component inputs, or was it extracting the components from the single combined address field? I have done something similar before, but the problem is that you can't guarantee how site editors will enter the address that way.

Share this post


Link to post
Share on other sites
On 9/24/2017 at 9:30 PM, PWaddict said:

To always display the map at the center even if the browser resized or the full screen button pressed just use the below function:


google.maps.event.addDomListener(window, 'resize', function() {
		var center = map.getCenter()
		google.maps.event.trigger(map, "resize")
		map.setCenter(center)
	});

 

The Google Maps API have just been updated and the "center" is now working on all browsers:

  • When the map is resized, the map center is fixed
    • The full-screen control now preserves center.
    • There is no longer any need to trigger the resize event manually.

Share this post


Link to post
Share on other sites
22 hours ago, adrian said:

I am curious how you handled it in ready.php - did you create the additional component inputs, or was it extracting the components from the single combined address field? I have done something similar before, but the problem is that you can't guarantee how site editors will enter the address that way.

Nothing special. Just a concatenate from values like this:

$page->map_lieu->address = "{$page->no_civique} {$page->rue}, {$page->ville}, {$page->codepostal} {$page->pays}";

Data were entered from FormBuilder, with fields similar to yours. I'm now at ~150 adresses collected and I just have a couple which didn't geolocalize (generally a typo).  Status varied to "rooftop to geometric center". My only concerns is if you get a "Zero results" status, on front-end, the square map appears but with nothing. I'm planning to display the map with a "if status>=1", just to be sure.

Share this post


Link to post
Share on other sites

Interesting discussion about extra address fields.

I created a fieldtype 'AddressGeoNames' that consists of separate text inputs for country, city, postcode, lat, lng etc. where field values are verified and partially auto populated through geonames.org API.

This is a standalone Inputfield that geocodes through the google maps api.

But it can also be connected to an InputfieldLeafletMapMarker field so that the given address will be rendered as pin on the map. The pin can also be manually repositioned and writes back lat/lng to the AddressGeonames field.

I am currently using this in one live project with about 1500 users and they seem to get along fine with data input and geocoding.

This is how it looks like when used next to a InputfieldLeafletMapMarker field:
addressgeonames.thumb.png.7811ec93b18df1d5952ce7d9b93044a3.png

Planning on adding support for GoogleMapsMarker, too and eventually releasing it on github. Not quite ready yet, though. But if anyone is interested in the concept, I could share what I have so far.

 

  • Like 4

Share this post


Link to post
Share on other sites

Really nice work on the Map InputFields folks!

I need to do something similar next week for a travel company. They want to plot a route on a map and I have been wondering about the best way to go about this.

My thoughts so far would be to tie a repeater control to a map, let the user use the marker to plot the route, then add the coordinates into a repeater control. 

This approach using jQuery opens up all kinds of issues in terms of managing the UX design for removing steps in the route, adding individual steps into the repeater, synchronizing the plotted route with the repeater control entries from the marker etc....

Wondered if any one else has run into similar UX request and found a better way around it.

 

 

Share this post


Link to post
Share on other sites

Hi guys, 

Do you have the map marker module working in version 2.8 or version 3? In processwire admin, I can see the map, but then when I go to the page where the map should be showing, I'm getting an error: " MarkupGoogleMap Error: Please add the maps.google.com script in your document head. The map is not showing on the page. " 

I have fresh processwire installation

it seems that the module injects the google maps script before html tag, it seems to be causing the problem... I'm not sure how to solve this

 

<script type='text/javascript' src='/site/modules/FieldtypeMapMarker/MarkupGoogleMap.js'></script><div id='mgmap1' class='MarkupGoogleMap' style='width: 100%; height: 300px;'></div><script type='text/javascript'>if(typeof google === 'undefined' || typeof google.maps === 'undefined') { alert('MarkupGoogleMap Error: Please add the maps.google.com script in your document head.'); } else { var mgmap1 = new MarkupGoogleMap(); mgmap1.setOption('zoom', 12); mgmap1.setOption('mapTypeId', google.maps.MapTypeId.HYBRID); mgmap1.init('mgmap1', 40.712776, -74.005974); mgmap1.addMarker(40.712776, -74.005974, '/en/about/', 'About', ''); }</script><!DOCTYPE html>
<html lang="en">
<head>

when I paste the code inside <head> manually, then I can see the map on the page where it should be visible. 

 

Any suggestions?

Share this post


Link to post
Share on other sites
On 14.2.2018 at 3:13 AM, adrian said:

Not sure if anyone is interested, but I just extended this to support address component fields. Now you can enter the various address components individually and it will automatically populate the final combined address field and geocode the address to lat/long.

image.thumb.png.622315b1d549731b233fe3be3e8a1995.png

I wanted this so I could grab the individual components for displaying a business address in a specific format, rather than relying on what the site editor entered into the combined address field.

You can of course call the components like this:


$page->address->street
$page->address->additional
$page->address->city
$page->address->state
$page->address->postcode
$page->address->country

These are in addition to the existing:


$page->address->address // the combined version
$page->address->lat
$page->address->lng
$page->address->zoom

Is anyone interested in this version? Not sure if @ryan would accept a PR or not?

 

I want tha ;)

Share this post


Link to post
Share on other sites

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


  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Robin S
      Checkbox Reversed
      Modifies InputfieldCheckbox so that it shows the reverse of its true value. The checkbox will be unchecked when the field value is 1 and checked when the field value is not 1.
      Background
      The core FieldtypeCheckbox does not have a setting that allows a checkbox to be checked by default. One reason for this is that only a checked field saves a value to the database. An unchecked field does not save "0" to the database, but rather does not save any value for the field at all. Therefore there is no way to distinguish between a new field that has not yet been saved (and therefore could potentially get a default checked state) and a field that has deliberately been saved as unchecked.
      Because of this you sometimes have to use a checkbox in the opposite way than you would like. Suppose your client has requested a checkbox labelled "Bootylicious" that will be checked by default. This isn't possible with FieldtypeCheckbox so instead you have to convince them that a checkbox labelled "Not bootylicious" that is unchecked by default is just as good. This alternative will achieve the same thing, but it's not ideal.
      A solution
      This module doesn't change the limitations of the core checkbox field, but it provides a workaround that allows you to show the checkbox with the desired default state and label. So in the example above you would still name the field "not_bootylicious" (otherwise it could get confusing in your template files) but you can label the field "Bootylicious" and the checkbox will appear checked when its true value is actually unchecked, and vice versa. This allows new pages to show the checkbox checked by default. Clear as mud?
      Usage
      Install the Checkbox Reversed module.
      For any Checkbox field where you want the inputfield to show the reverse of its true value, activate the "Reverse the checked state of this inputfield?" option in the field settings.

       
      https://github.com/Toutouwai/CheckboxReversed
      http://modules.processwire.com/modules/checkbox-reversed/
    • By louisstephens
      I have been following @bernhard's great tutorial on creating a Dashboard and everything has very easy to understand so far. However, I need to add a select field that a template is using (so users can create a new page from the dashboard), but I am really at a complete lost on how to achieve this. I have been googling, but can't really find anything on the matter.
      $field = $this->modules->get('InputfieldSelect'); $field->name = "Select Manufacturer"; $field->findPagesSelector = "template=basic-page"; //not needed for select field $field->labelFieldName = "title"; $field->name = "Manufacturer Select"; $field->columnWidth = 34; $fieldset->add($field); I have the above code, which was originally an InputfieldPage, but since this is an options field, I have changed it. Has anyone actually gotten a select from a template (and its' values) in a module?
    • By Lex Sanchez
      Video or Social Post Embed
      Based on the TextformatterVideoEmbed module developed by Ryan Cramer, we have added the possibility to embed publications of the main social networks Facebook, Twitter and Instagram.
      ProcessWire Textformatter module that enables translation of YouTube, Vimeo, Instagram, Facebook, Twitter or Issuu URLs to full embed codes, resulting in a viewable video or social post in textarea fields you apply it to.
      How to install
      Download or Clone from Github: https://github.com/lexsanchez/VideoOrSocialPostEmbed
      Copy the VideoOrSocialPostEmbed.module file to your /site/modules/ directory (or place it in /site/modules/VideoOrSocialPostEmbed/).
      Click check for new modules in ProcessWire Admin Modules screen. Click install for the module labeled: "Video or Social Post Embed".
      Now you will be on the module config screen. Please make note of the config options and set as you see fit.
      How to use
      Edit your body field in Setup > Fields (or whatever field(s) you will be placing videos in). On the details tab, find the Text Formatters field and select "Video or Social Post Embed". Save.
      Edit a page using the field you edited and paste in YouTube, Vimeo, Facebook, Twitter, Instagram and/or Issuu URLs each on their own paragraph.
      Example
      How it might look in your editor (like TinyMCE):
      How it works
      This module uses YouTube, Vimeo, Instagram, Facebook, Twitter and Issuu oEmbed services to generate the embed codes populated in your content. After these services are queried the first time, the embed code is cached so that it doesn't need to be pulled again.
      Configuration
      You may want to update the max width and max height settings on the module's configuration screen. You should make these consistent with what is supported by your site design.
      If you change these max width / max height settings you may also want to check the box to clear cache, so that YouTube/Vimeo/Facebook/Twitter/Instagram/Issuu oembed services will generate new embed codes for you.
      Using with Markdown, Textile or other LML
      This text formatter is looking for a YouTube, Vimeo, Instagram, Facebook, Twitter or Issuu video URL surrounded by paragraph tags. As a result, if you are using Markdown or Textile (or something else like it) you want that text formatter to run before this one. That ensures that the expected paragraph tags will be present when VideoOrSocialPostEmbed runs. You can control the order that text formatters are run in by drag/drop sorting in the field editor.
      Copyright 2018 by Ryan Cramer / Updated by Lex Sanchez
    • By kixe
      Email Verification
      This module provides functions to validate email adresses and hosts. The module generates a textfile for blacklisted mailhosts (trashmail), which will be always up to date.
      Download
      https://modules.processwire.com/modules/email-verification/
      API
      // get module $mailcheck = $modules->get('EmailVerification'); // return bool/ string - automatted update of blacklist file $mailcheck->blacklisted(email|domain) // return bool - validate a top level domain, checks against IANA list $mailcheck->validTLD(tld) // return array of punycoded TLDs - cyclic updated, data pulled from IANA $mailcheck->getTLDs(cycle=2592000) // return bool - checks syntax converts to punycode $mailcheck->validDomainName(domain); // return bool - checks punycode encoded syntax $mailcheck->validHostName(host); // return bool - checks syntax and accessibility $mailcheck->validHost(email|domain) // add a single value to blacklist $mailcheck->addToBlacklist(email|domain) USAGE
      $mailcheck = $modules->get('EmailCheck'); $email = 'susi@trashmail.com'; if($mailcheck->blacklisted($email)) echo 'Email Provider not allowed'; if(!$mailcheck->validHost($email)) echo 'Mailhost not available'; Example blacklist file:  blacklist.txt