You need to sign in to do that
Don't have an account?
Mark Z Dean
Problem with Showing LE Component on Page
I have completed the challenge below but I am not able to show my component on a page:
https://trailhead.salesforce.com/content/learn/modules/platform-developer-i-certification-maintenance-winter-19/work-with-the-lightning-map-component-and-apex-inherited-sharing
I keep getting the error below:
https://trailhead.salesforce.com/content/learn/modules/platform-developer-i-certification-maintenance-winter-19/work-with-the-lightning-map-component-and-apex-inherited-sharing
I keep getting the error below:
This code is working correctly for (Work with the Lightning Map Component and Apex Inherited Sharing).
Towermap.cmp
<aura:component implements="flexipage:availableForAllPageTypes" controller="TowerMapControllerClass" access="global" >
<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)}" >
<!-- Create lightning:map here -->
<lightning:map
mapMarkers="{! v.mapMarkers }"
markersTitle="{! v.markersTitle}"
zoomLevel="5" />
</aura:if>
</aura:component>
TowerMapUtilClass.apxc
public inherited sharing class TowerMapUtilClass {
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);
}
}
TowerMapControllerClass.apxc
public with sharing class TowerMapControllerClass {
@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 = TowerMapUtilClass.queryObjects(theObject, theFields, theFilter, sortField, sortOrder);
return allTowers;
}
}
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);
}
})
I hope you find the above solution helpful. If it does, please mark as Best Answer to help others too.
Thanks and Regards,
Deepali Kulshrestha