Bring in the map direction stuff from Chuck
authorSteve Sutton <steve@gaslightmedia.com>
Tue, 26 Feb 2019 16:45:51 +0000 (11:45 -0500)
committerSteve Sutton <steve@gaslightmedia.com>
Tue, 26 Feb 2019 16:45:51 +0000 (11:45 -0500)
Chuck's map direction stuff added.

glm-member-db/views/front/members/detail.html

index 62f33cb..3b56d9d 100644 (file)
                     <script src="//maps.googleapis.com/maps/api/js?sensor=true&key={$settings.google_maps_api_key}"></script>
                     <script type="text/javascript">var enableDraggable = true;</script>
                     <div id="glm-locationMap" class="glm-map glmgrid-small-12 glmgrid-columns">(map loads here)</div>
-      {/if}   
+      {/if}
                 </div>
                 <div id="glm-member-detail-map-button" class="button map-button">view map</div>
 
                             <a class="glm-member-detail-link-to-top">Back to top</a>
                         </div>
                     </div>
-                    
+
                     {apply_filters('glm-member-db-front-members-detail-events', '', $member.id)}
-                    
+
                     {apply_filters('glm-member-db-front-members-detail-couponsBefore', '', $member.id)}
                     {if $settings.detail_show_coupons && $coupons}
                     <div id="glm-member-detail-coupons-toggle" class="glm-member-detail-content-toggle">Coupons</div>
                     </div>
                     {/if}
                     {apply_filters('glm-member-db-front-members-detail-couponsAfter', '', $member.id)}
-                    
+
                     {apply_filters('glm-member-db-front-members-detail-amenitiesBefore', '', $member.id)}
                     {if $member.amenities && $settings.detail_show_amenities}
                     <div id="glm-member-detail-amenities-toggle" class="glm-member-detail-content-toggle">Amenities & Services</div>
                     {/if}
 
                     {apply_filters('glm-member-db-front-members-detail-liveCamAfter', '', $member.id)}
-                    
+
                     {$customFields = apply_filters('get_glm_custom_fields','glm-member-db',$member.memberInfoId)}
                     {if !empty($customFields[0].field_data)}
                         <div id="glm-member-detail-hours-toggle" class="glm-member-detail-content-toggle">Hours</div>
                         <div id="glm-member-detail-hours-container" class="glm-member-detail-content-data">
                             <div id="glm-member-detail-hours" >
-                                
+
                                 {foreach $customFields as $field}
                                     {if $field.field_data}
                                         <div class="glm-member-detail-custom-field">
                                                 <span class="glm-member-detail-custom-field-name small-12 medium-5 columns" >{$field.field_name}</span>
                                                 <span class="glm-member-detail-custom-field-data small-12 medium-7 columns">{$field.field_data}</span>
                                             </div>
-                                            
+
                                         </div>
                                     {/if}
                                 {/foreach}
                             </div>
-                        
+
                             <div class="glm-member-detail-sub-data-links row">
                                 <a class="glm-member-detail-content-toggle">Collapse</a>
                                 <a class="glm-member-detail-link-to-top">Back to top</a>
                             </div>
                         </div>
                     {/if}
-                    
+
                     {apply_filters('glm-member-db-front-members-detail-imageGalleryBefore', '', $member.id)}
                     {if $settings.detail_show_imagegallery && $haveImageGallery}
                     <div id="glm-member-detail-images-toggle" class="glm-member-detail-content-toggle">Photos</div>
                     </div>
                     {/if}
                     {apply_filters('glm-member-db-front-members-detail-imageGalleryAfter', '', $member.id)}
-                   
+
                     {apply_filters('glm-member-db-front-members-detail-dataBottom','',$member.id)}
                 </div>
             </div>
     </div>
     {apply_filters('glm-member-db-front-members-detail-pageBottom', '', $member.id)}
 
+    <div id="findingYourLocationDialog" title="Your present location">
+        <p>
+            We would like to lookup your present location so we can provide accurate directions.
+        </p><p>
+            Your browser may ask for your permission to determine your location
+            (possibly at the top of this page).
+        </p><p>
+            If you agree, we will use your current location as the starting point for
+            directions. If you don't agree, you may enter a starting location when the map is displayed.
+        </p>
+    </div>
+
     <script type="text/javascript">
         {apply_filters('glm-member-db-front-members-detail-jqueryScriptTop', '', $member.id)}
 
         jQuery(document).ready(function($) {
 
+            // Dialog box to show when submitting checkout page
+            $( "#findingYourLocationDialog" ).dialog({
+                autoOpen: false,
+                width: 600
+            });
+            $( "#lookingUpYourLocationDialog" ).dialog({
+                autoOpen: false,
+                width: 600
+            });
+
+            var trackToConsole = true;         // Send debug/progress messages to developers console (Firefox)
+            var trackPositionInterval = 60000;  // Time interval for getting user's current geolocation - 1 Min
+            var highAccuracyPoisition = true;   // Request high-accuracy user geolocation from user's device
+            var postionTimeout = 15000;         // Maximum amount of time we'll wait for geolocation result - 15 Sec
+
+            // Process form for sending user to Google Maps for driving directions
+            $("#MemberDrivingDirectionsForm").submit(function(){
+
+                var stopGeolocation = false;
+                var myCurrentLocation = false;
+
+                // If we already have a location
+                if (myCurrentLocation) {
+                    sendToGoogleMaps(myCurrentLocation);
+                } else {
+
+                    // We don't yet have a location, so try to get it
+                    if (navigator.geolocation) {
+
+                        $( "#findingYourLocationDialog" ).dialog("open");
+
+                        // Get the user's location
+                        navigator.geolocation.getCurrentPosition(function(position) {
+
+                            // Save their current location
+                            myCurrentLocation = {
+                                  lat: position.coords.latitude,
+                                  lon: position.coords.longitude
+                            };
+
+                            $( "#findingYourLocationDialog" ).dialog("close");
+                            sendToGoogleMaps(myCurrentLocation);
+
+                        // If we can't get the location, then go without it
+                        },
+                        function(err) {
+                            $( "#findingYourLocationDialog" ).dialog("close");
+                            sendToGoogleMaps(false);
+                        },
+                        {
+                            enableHighAccuracy: highAccuracyPoisition,
+                            timeout:            postionTimeout,
+                            maximumAge:         trackPositionInterval - 100     // Allows cached position resulting from other requests during interval
+                        });
+
+                    }
+
+                }
+
+                return false;
+
+            });
+
+            function sendToGoogleMaps(myLocation) {
+                var lat = plusifyMyValue(jQuery("#MemberLat").val());
+                var lon = plusifyMyValue(jQuery("#MemberLon").val());
+                var dest = '&destination=' + lat + '%2C+' + lon;
+
+                var origin = '';
+                if (myLocation) {
+                    var myLat = plusifyMyValue(myLocation.lat);
+                    var myLon = plusifyMyValue(myLocation.lon);
+                    origin = '&origin=' + myLat + '%2C+' + myLon;
+                }
+
+                var url = "https://www.google.com/maps/dir/?api=1" + origin + dest;
+                window.open(url, '_blank');
+            }
+
+            function plusifyMyValue(v) {
+                if (v > 0) {
+                    v = '+' + v;
+                }
+                return v;
+            }
+
             // change the member detail photos grid structure depending
             var images_container = $("#glm-member-detail-images-container");
             // Check if Foundation exists first
                     $("#glm-member-detail-packages-container").slideToggle("fast", "swing",  function() {});
                     $("#glm-member-detail-packages-toggle").toggleClass("selected");
                 }
-                
+
                 if( $("#glm-member-detail-images-container").length > 0 && $("#glm-member-detail-description-toggle").length > 0){
                     $("#glm-member-detail-images-container").slideToggle("fast", "swing",  function() {});
                     $("#glm-member-detail-images-toggle").toggleClass("selected");
                 }
-                
+
             }
 
             // Open or close the appropriate section if a toggle is clicked
                 $(this).html(mapBtnTxt);
             });
 
-      {if $settings.selected_map_interface == 1}    
-            
+      {if $settings.selected_map_interface == 1}
+
             /*
              *  Leaflet Map
              *  API reference: https://leafletjs.com/reference-1.3.2.html
         {/if}
 
             function initMap() {
-            
+
                 var leafletMap = L.map('LeafletMapContainer').setView([memberLat, memberLon], {$settings.maps_default_zoom});
                 var leafletTileServer = '{$settings.leaflet_tile_server}/{$settings.leaflet_tile_server_key}/' + {literal}'{z}/{x}/{y}.png'{/literal};
                 var leafletMinZoom = 5;
                     delayIndicator: 500
                 });
                 leafletMap.addControl(loadingControl);
-                
+
                 // Marker
                 var leafletMarker = L.marker([memberLat, memberLon]).addTo(leafletMap);
-            
+
             }
-        
+
       {/if}
 
-      {if $settings.selected_map_interface == 2}    
-      
+      {if $settings.selected_map_interface == 2}
+
             /*
              * Google Maps
              *  API reference: https://developers.google.com/maps/documentation/javascript/reference
             google.maps.event.addDomListener(window, 'load', initMap);
 
       {/if}
-          
+
     {/if} {*detail_show_map*}
-            
+
             $(window).load(function(){
                 initMap();
             });