UtilityClass.cls
public inherited sharing class UtilityClass {
public static List<sObject> queryObjects(String theObject, List<String> theFields, String theFilter, String sortField, String sortOrder) {
String theQuery = 'SELECT ' + string.join(theFields, ',');
theQuery += ' FROM ' + theObject;
if(!String.isEmpty(theFilter)) {
theQuery += ' WHERE ' + theFilter;
}
if(!String.isEmpty(sortField)) {
theQuery += ' ORDER BY ' + sortField;
if(!String.isEmpty(sortOrder)) {
theQuery += ' ' + sortOrder;
}
}
return database.query(theQuery);
}
}
TowerMapController.cls
public with sharing class TowerMapController {
@AuraEnabled
public static List<Tower__c> getAllTowers() {
String theObject = 'Tower__c';
List<String> theFields = new List<String>{'Id', 'Name', 'State__r.Name', 'Tower_Location__Latitude__s', 'Tower_Location__Longitude__s'};
String theFilter = '';
String sortField = 'Name';
String sortOrder = 'ASC';
List<Tower__c> allTowers = UtilityClass.queryObjects(theObject, theFields, theFilter, sortField, sortOrder);
return allTowers;
}
}
Towermap.cmp
<aura:component access="global" controller="TowerMapControllerClass" implements="force:appHostable,flexipage:availableForAllPageTypes">
<aura:attribute name="mapMarkers" type="Object" access="PRIVATE" />
<aura:attribute name="markersTitle" type="String" access="PRIVATE" />
<aura:handler name="init" value="{!this}" action="{!c.handleInit}"/>
<aura:if isTrue="{!!empty(v.mapMarkers)}" >
<lightning:map mapMarkers="{! v.mapMarkers }" markersTitle="{!v.markersTitle}" zoomLevel="5" />
</aura:if>
</aura:component>
TowermapController.js
({
handleInit: function (component, event, helper) {
helper.initHelper(component, event, helper);
}
})
TowermapHelper.js
({
initHelper : function(component, event, helper) {
helper.utilSetMarkers(component, event, helper);
},
utilSetMarkers : function(component, event, helper) {
let action = component.get("c.getAllTowers");
action.setCallback(this, function(response) {
const data = response.getReturnValue();
const dataSize = data.length;
let markers = [];
for(let i=0; i < dataSize; i += 1) {
const Tower = data[i];
markers.push({
'location': {
'Latitude' : Tower.Tower_Location__Latitude__s,
'Longitude' : Tower.Tower_Location__Longitude__s
},
'icon': 'utility:Tower',
'title' : Tower.Name,
'description' : Tower.Name + ' Tower Location at ' + Tower.State__r.Name
});
}
component.set('v.markersTitle', 'Out and About Communications Tower Locations');
component.set('v.mapMarkers', markers);
});
$A.enqueueAction(action);
}
})
Lightning App Builder

RECENT COMMENT