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

pull/2487/head
José Loguercio 9 years ago
parent 860fc706da
commit 11fecd83f0
  1. 18
      plugin/google_maps/src/map_coordinates.php
  2. 38
      plugin/google_maps/view/map_coordinates.tpl

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

@ -6,7 +6,10 @@
initMap(); 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); var location = new google.maps.LatLng(lat, lng);
@ -19,11 +22,34 @@
position: location, position: location,
label: userInfo.complete_name 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 = ""; var address = "";
geocoder.geocode({ 'latLng': location }, function (results) { geocoder.geocode({ 'latLng': location }, function (results) {
if (results) {
address = results[1].formatted_address; address = results[1].formatted_address;
} else {
address = '{{ 'Unknown' | get_lang }}';
}
var infoWinContent = "<b>" + userInfo.complete_name + "</b> - " + address; var infoWinContent = "<b>" + userInfo.complete_name + "</b> - " + address;
@ -53,7 +79,11 @@
mapTypeId: google.maps.MapTypeId.ROADMAP 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 }}'; var latLng = '{{ field.value }}';
latLng = latLng.split(','); latLng = latLng.split(',');
@ -63,7 +93,9 @@
{% set userInfo = field.itemId | user_info %} {% set userInfo = field.itemId | user_info %}
addMaker(lat, lng, map, bounds, {{ userInfo|json_encode }}); addMaker(lat, lng, map, bounds, {{ userInfo|json_encode }}, index);
{% endfor %}
{% endfor %} {% endfor %}

Loading…
Cancel
Save