Browse Source

Up to 5 geo fields markers with different colors and fix marker infoLabel - Refs BT11371

José Loguercio 8 years ago
parent
commit
11fecd83f0

+ 13 - 5
plugin/google_maps/src/map_coordinates.php

@@ -19,19 +19,27 @@ $plugin = GoogleMapsPlugin::create();
 $apiIsEnable = $plugin->get('enable_api') === 'true';
 $extraFieldName = $plugin->get('extra_field_name');
 
+$extraFieldName = array_map('trim', explode(',', $extraFieldName));
+
 if ($apiIsEnable) {
     $gmapsApiKey = $plugin->get('api_key');
     $htmlHeadXtra[] = '<script type="text/javascript" src="//maps.googleapis.com/maps/api/js?key='. $gmapsApiKey . '" ></script>';
 }
 
 $em = Database::getManager();
-
 $extraField = $em->getRepository('ChamiloCoreBundle:ExtraField');
-$extraField = $extraField->findOneBy(['variable' => $extraFieldName]);
 
-if ($extraField) {
-    $extraFieldValues = $em->getRepository('ChamiloCoreBundle:ExtraFieldValues');
-    $extraFieldValues = $extraFieldValues->findBy(['field' => $extraField->getId()]);
+$extraFieldNames = [];
+
+foreach ($extraFieldName as $field) {
+    $extraFieldNames[] = $extraField->findOneBy(['variable' => $field]);
+}
+
+$extraFieldValues = [];
+
+foreach ($extraFieldNames as $fieldName) {
+    $extraFieldRepo = $em->getRepository('ChamiloCoreBundle:ExtraFieldValues');
+    $extraFieldValues[] = $extraFieldRepo->findBy(['field' => $fieldName->getId()]);
 }
 
 $templateName = $plugin->get_lang('UsersCoordinatesMap');

+ 41 - 9
plugin/google_maps/view/map_coordinates.tpl

@@ -6,7 +6,10 @@
         initMap();
     });
 
-    function addMaker(lat, lng, map, bounds, userInfo) {
+    function addMaker(lat, lng, map, bounds, userInfo, index) {
+        if (index > 5) {
+            return;
+        }
 
         var location = new google.maps.LatLng(lat, lng);
 
@@ -19,11 +22,34 @@
             position: location,
             label: userInfo.complete_name
         });
+
+        switch (index) {
+            case '1':
+                marker.setIcon('//maps.google.com/mapfiles/ms/icons/red-dot.png');
+                break;
+            case '2':
+                marker.setIcon('//maps.google.com/mapfiles/ms/icons/green-dot.png');
+                break;
+            case '3':
+                marker.setIcon('//maps.google.com/mapfiles/ms/icons/blue-dot.png');
+                break;
+            case '4':
+                marker.setIcon('//maps.google.com/mapfiles/ms/icons/yellow-dot.png');
+                break;
+            case '5':
+                marker.setIcon('//maps.google.com/mapfiles/ms/icons/purple-dot.png');
+                break;
+        }
+
         var address = "";
 
         geocoder.geocode({ 'latLng': location }, function (results) {
 
-            address = results[1].formatted_address;
+            if (results) {
+                address = results[1].formatted_address;
+            } else {
+                address = '{{ 'Unknown' | get_lang }}';
+            }
 
             var infoWinContent = "<b>" + userInfo.complete_name + "</b> - " + address;
 
@@ -53,17 +79,23 @@
             mapTypeId: google.maps.MapTypeId.ROADMAP
         });
 
-        {% for field in extra_field_values %}
+        {% for extra in extra_field_values %}
+
+            var index = '{{ loop.index }}';
+
+            {% for field in extra %}
+
+                var latLng = '{{ field.value }}';
+                latLng = latLng.split(',');
 
-            var latLng = '{{ field.value }}';
-            latLng = latLng.split(',');
+                var lat = latLng[0];
+                var lng = latLng[1];
 
-            var lat = latLng[0];
-            var lng = latLng[1];
+                {% set userInfo = field.itemId | user_info %}
 
-            {% set userInfo = field.itemId | user_info %}
+                addMaker(lat, lng, map, bounds, {{ userInfo|json_encode }}, index);
 
-            addMaker(lat, lng, map, bounds, {{ userInfo|json_encode }});
+            {% endfor %}
 
         {% endfor %}