Soma Posted April 4, 2013 Share Posted April 4, 2013 foreach($ides as $id) { echo $pages->get($id); } Link to comment Share on other sites More sharing options...
DaveP Posted April 4, 2013 Share Posted April 4, 2013 (edited) You have a list of page ids in the right order direct from the db query, so this should work... $r=$db->query('SELECT pages_id, ('.$user_location->lng.'-lng)*('.$user_location->lng.'-lng) + ('.$user_location->lat.'-lat)*('.$user_location->lat.'-lat) AS "distance" FROM field_map_location ORDER BY distance'); while($row=$r->fetch_row()){ $loc = $pages->get(row[0]); echo $loc->id; } (Untested and written in browser) <edit>Soma beat me to it. Again.</edit> Edited April 4, 2013 by DaveP Link to comment Share on other sites More sharing options...
WillyC Posted April 4, 2013 Share Posted April 4, 2013 uses: $results=$pages->getById($ides) ; muches faster!! then get() ones.by one and in.right orders they will.be 2 Link to comment Share on other sites More sharing options...
diogo Posted April 4, 2013 Share Posted April 4, 2013 $cheatsheet->push($pages->getById()); Link to comment Share on other sites More sharing options...
Soma Posted April 4, 2013 Share Posted April 4, 2013 I knew it but just wanted to leave some room for improvement so you guys also have something to write. 3 Link to comment Share on other sites More sharing options...
ryan Posted April 7, 2013 Author Share Posted April 7, 2013 If you need to retrieve a bunch of pages by ID, then getById() is much better than a foreach with get() simply because getById() does its primary work with one query, whereas get() does at least one query per call. But getById is also one of those things that most people will probably never use (it's largely an internal use thing). As a result, it probably just belongs in the 'advanced' API section. Link to comment Share on other sites More sharing options...
Basil Posted April 19, 2013 Share Posted April 19, 2013 hi forum!! i have a problem to output the map it works great in admin when i put the adress marker moves to corect position, but i cant view map in frontend, i use <?php echo $page->map; ?> but the output is the adress name, not the map. thank you! Link to comment Share on other sites More sharing options...
Michael Murphy Posted April 19, 2013 Share Posted April 19, 2013 Hi Basil, The module will only output the map data - like the street address and lon / lat values. You will need to add the javascript map code in your template. It's not so hard with google maps - you can read more about how to do this in an earlier post : http://processwire.com/talk/topic/690-map-marker-fieldtype/page-3#entry31486 Link to comment Share on other sites More sharing options...
Michael Murphy Posted April 19, 2013 Share Posted April 19, 2013 While this module is being discussed again, has anyone managed to get it to load a default location when first opened (before doing a search). Currently when you first open the field you see a gray empty map until you do a search. I would like to it to load to a default zoom level and location. For example I am just adding locations in Basel, so I want it to already show Basel, and then the user can just drag and drop the pin to the correct location (without having to do a search). Would be a nicer user experience. Link to comment Share on other sites More sharing options...
Basil Posted April 19, 2013 Share Posted April 19, 2013 thank you Michael i read this but i am so confused that i dont know how to do it, what i try is this: // //ON THE HEADER I ADD:/// <style type="text/css"> html { height: 100% } body { height: 100%; margin: 0; padding: 0 } #map-canvas { height: 100% } </style> <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> </head> //// ON THE BODY I ADD: ///// <div class="span4"> function initialize() { var mapOptions = { center: new google.maps.LatLng(<?php echo $page->map->address ?>, <?php echo $page->map->lat ?>, <?php echo $page->map->lng ?>,), zoom: 8, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); } google.maps.event.addDomListener(window, 'load', initialize); </script> </div> but output is nothing, you see some mistake? Link to comment Share on other sites More sharing options...
Michael Murphy Posted April 19, 2013 Share Posted April 19, 2013 maybe you are missing the opening script tag? I can see </script> but not <script> - try adding this after the div class=span4 Link to comment Share on other sites More sharing options...
Basil Posted April 19, 2013 Share Posted April 19, 2013 thank you for your help Michael. no iam sory is there but missed from copy paste here: <div class="span4"> <script type="text/javascript"> function initialize() { var mapOptions = { center: new google.maps.LatLng(<?php echo $page->map->address ?>, <?php echo $page->map->lat ?>, <?php echo $page->map->lng ?>,), zoom: 8, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); } google.maps.event.addDomListener(window, 'load', initialize); </script> </div> i cant find wats wrong Link to comment Share on other sites More sharing options...
Wanze Posted April 19, 2013 Share Posted April 19, 2013 @Basil Open your javascript console and check for errors. In your posted code there's one comma too much: <?php echo $page->map->lng ?>, /*remove this comma*/ Cheers Link to comment Share on other sites More sharing options...
Basil Posted April 19, 2013 Share Posted April 19, 2013 thank you Wanze.. and Michael.. not working i cant see whats wrong //// IN HEAD I USE///// <style type="text/css"> #map-canvas { height: 100% } </style> <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=HERE IS MY KEY BUT I DELETE FOR SHOW &sensor=true"> </script> ////// IN BODY IUSE ////// <div id="map-canvas"> <script type="text/javascript"> function initialize() { var mapOptions = { center: new google.maps.LatLng(<?php echo $page->map->lat ?>, <?php echo $page->map->lng ?>), zoom: 8, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); } google.maps.event.addDomListener(window, 'load', initialize); </script> </div> Link to comment Share on other sites More sharing options...
Wanze Posted April 19, 2013 Share Posted April 19, 2013 No problem. Can't help anymore, you should open the javascript console and reload the page. The console will report if there are any js errors. If you don't know how to fix please post the error message. Link to comment Share on other sites More sharing options...
Soma Posted April 20, 2013 Share Posted April 20, 2013 Dont you need to put the script outside after the div? 1 Link to comment Share on other sites More sharing options...
alan Posted April 24, 2013 Share Posted April 24, 2013 I have found in a new 2.3 install that if this Module is present and the site is on a live host (not MAMP) then accessing a page that uses a field of type Map produces this error 2013-04-24 18:25:32 guest http://example.com/contact/ Error: Call to a member function loadPageField() on a non-object (line 651 of /var/www/vhosts/example.com/wire/core/Page.php) My quick fix is to not use this Module but I would love to solve this so I could proceed and use it in this case and in future. I am going to do some checking on version numbers locally and on the server and will edit this post/post again but in the meantime if any uber-clever PW friends know why this might be happening I would be very interested as I really wanted to use the Module. Thanks a lot in advance friends, cheers, -Alan Edit: The server version of PHP is 5.3.5 and I can set my local MAMP version as low as 5.2.17 and the error is still happening on the server and not happening on the local MAMP setup. Link to comment Share on other sites More sharing options...
Marty Walker Posted April 25, 2013 Share Posted April 25, 2013 Alan, I'm running that Map module on a new 2.3 install and it's working fine. My PHP on MAMP (where it originated) is 5.4.10 and the live server runs 5.3.13 and still no problem. Cheers Marty Link to comment Share on other sites More sharing options...
alan Posted April 25, 2013 Share Posted April 25, 2013 (edited) Thanks Marty, yes this is a weird one, I ran out of time last night but I am going to get to the bottom of this one, when I go to login I am also seeing SESSION : FIELDTYPE 'FIELDTYPEMAPMARKER' DOES NOT EXIST FIELD : FIELDTYPE 'FIELDTYPEMAPMARKER' DOES NOT EXIST and there is another thread here about config.php fingerprints or keys created on one server used on another. So I also need to investigate that and perhaps they are related. Edit: OK well those two were obvious (I need more coffee) the PW install still had a field type of MAP, removed the field and restored the local DB to remote and now the remote does not report the error. Now to return to trying to figure out why my good hosting seems to cough if there is a field of type MAP... Edited April 25, 2013 by alanfluff Link to comment Share on other sites More sharing options...
alan Posted April 25, 2013 Share Posted April 25, 2013 (edited) To see what I could learn about this error I installed a vanilla PW 2.3 directly on the hosting rather than locally and exporting. So far this method has worked and exporting back to local still works and exporting local back to hosting still works. Now gradually making the test site more like the site that had the problem (adding modules etc) to see where (if) it trips up. One thing I have learnt, if I install a Module then export the db and sync files (local to hosting or visa versa) then login on the place I exported to then although I am running with a set of files for all modules and a db that was running with all modules until I actually visit Modules in the PW admin and click check for new Modules (which reports none new are found) the new modules are not listed as installed in Modules Manager. I did not expect this behaviour and don't quite understand it but I will follow this procedure as a work-around (but maybe this is expect behaviour?). Edit: Perhaps the above behaviour is because I am not copying cache and session folders with the rest of the site when I upload? Edited April 25, 2013 by alanfluff Link to comment Share on other sites More sharing options...
ryan Posted April 28, 2013 Author Share Posted April 28, 2013 Double check that all of your module files in /site/modules/ are getting copied over. I've experienced a similar error on occasion when I copy over a site, but forget that some of my stuff in site/modules/ was actually symlinks to a shared modules directory… and the modules didn't get copied over to the server. Also, if you aren't copying over the /cache/ and /session/ folders, then at least make sure that you at least re-create these folders on the server and make sure they are writable. 1 Link to comment Share on other sites More sharing options...
alan Posted April 29, 2013 Share Posted April 29, 2013 Thanks Ryan, there will be some slack time soon when I am definitely going to be following up on this so I understand it. It's very helpful to know about session and cache, I will just copy them all in future I think, I can't even recall why I set them to excluded in my FTP client. Link to comment Share on other sites More sharing options...
ryan Posted August 16, 2013 Author Share Posted August 16, 2013 I've just pushed some fairly major updates to this module for version 2.0.0: Add zoom to the data managed by this module. It can be accessed from your field in the same way as address, lat and lng, i.e. $page->map->zoom. It will remember your zoom level setting from the page editor, and it can be used for generating your own maps. The map settings are now configurable in the field settings (input tab). This includes the starting/default location for the map, map height, default zoom level and map type. Removed some annoying behaviors from the geocoder. The client-side (javascript) and server-side geocoders no longer try to complete with each other. InputfieldMapMarker is now responsive so that it's input organization is just as usable at mobile resolution. Addition of a new related Markup module: MarkupGoogleMap. This provides an easy way for you to generate maps with the data managed by FieldtypeMapMarker: $map = $modules->get('MarkupGoogleMap'); // output a map with one marker echo $map->render($page, 'map'); // or output a map with a bunch of markers: $items = $pages->find("template=something"); echo $map-render($items, 'map'); This is just a basic usage example. For all options see the README. 6 Link to comment Share on other sites More sharing options...
rusjoan Posted August 19, 2013 Share Posted August 19, 2013 I don't know why, but this module doesn't work. It installs right but then when i'm creating new field with type "MapMarker" it isn't creating. It says that Table 'database.field_googlemap' doesn't exist I've tried to find SQL in installing function that creates field table. Is it right that "getDatabaseSchema" function is for create new field? Help me please! Running 2.3.0 Link to comment Share on other sites More sharing options...
Martijn Geerts Posted August 19, 2013 Share Posted August 19, 2013 The weird thing is : The map is registered in fields, but the table field_nameofthefield is not created. Running 2.3.2 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now