rayzh2012
3/22/2019 - 5:17 PM

trigger PopulateCitybyCoor

trigger PopulateCitybyCoor on VehicleDataR2__c (before insert, before update) {
  for (VehicleDataR2__c a: Trigger.New) {  
          Http h = new Http();
            HttpRequest req = new HttpRequest();
            req.setMethod('GET');
            //get the current coordinates
            
            // System.debug('current latitude: ' + this.currentCoordinates);
         
            // this will fail unless you set up https://maps.googleapis.com/ in your remote site settings
            //req.setEndpoint('https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&result_type=street_address&key=AIzaSyB9SidQvZbhRlDax3Vvg8ak0hE0nxk7seo');
           req.setEndpoint('https://maps.googleapis.com/maps/api/geocode/json?latlng= ' + a.latitude__c + ',' + a.Longitude__c + '&result_type=street_address&key=AIzaSyB9SidQvZbhRlDax3Vvg8ak0hE0nxk7seo');
            HttpResponse res = h.send(req);
                 
            // initialize your street address variables
            String streetNumber;
            String streetName;
        
            String city;
       
            // you can either deserialize to a class type, or untyped, as I've done here. 
            Map<String,Object> gr = (Map<String,Object>)JSON.deserializeUntyped(res.getBody());
            List<Object> results = (List<Object>)gr.get('results');
            Map<String,Object> firstResult = (Map<String,Object>)results[0]; // just taking the first one for this example
            
   
            List<Object> firstAddressComponents = (List<Object>)firstResult.get('address_components'); 
            Map<String,Object> streetNumberComp = (Map<String,Object>)firstAddressComponents[0];
            streetNumber = String.valueOf(streetNumberComp.get('short_name'));
            Map<String,Object> streetNameComp = (Map<String,Object>)firstAddressComponents[1];      
            streetName = String.valueOf(streetNameComp.get('short_name'));
            Map<String,Object> CityComp = (Map<String,Object>)firstAddressComponents[2];
            City= String.valueOf(CityComp.get('short_name'));
            
            System.debug('Street address: ' + streetNumber + ' ' + streetName);
             System.debug('Street address: ' + City);
            a.City__c = City;
          
    }
}