Thursday 8 May 2014

Integrate Google Map with Visual Force




Go to Your Name » Setup » Develop » Pages

Copy/paste the following code into a new Page replacing what appears by default.  Notice that in this example we're using custom fields for the Account address components:

<apex:page standardController="Account">
<apex:pageBlock >
<head>
 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<script type="text/javascript"> 
 
$(document).ready(function() {
  
  var myOptions = {
    zoom: 20,
    mapTypeId: google.maps.MapTypeId.HYBRID,
    mapTypeControl: true
  }
  
  var map;
  var marker;
  
  var geocoder = new google.maps.Geocoder();
  var address = "{!Account.Project_Street_Address__c}, " + "{!Account.Project_City__c}, " + "{!Account.Project_Zipcode__c}";
  
  var infowindow = new google.maps.InfoWindow({
    content: "<b>{!Account.Name}</b>"
  });
 
  geocoder.geocode( { address: address}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK && results.length) {
      if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {
      
        //create map
        map = new google.maps.Map(document.getElementById("map"), myOptions);
      
        //center map
        map.setCenter(results[0].geometry.location);
        
        //create marker
        marker = new google.maps.Marker({
            position: results[0].geometry.location,
            map: map,
            title: "{!Account.Name}"
        });
        
        //add listeners
        google.maps.event.addListener(marker, 'click', function() {
          infowindow.open(map,marker);
        });
        google.maps.event.addListener(infowindow, 'closeclick', function() {
          map.setCenter(marker.getPosition()); 
        });
        
      }
      
    } else {
      $('#map').css({'height' : '15px'});
      $('#map').html("Oops! {!Account.Name}'s address could not be found, please make sure the address is correct.");
      resizeIframe();
    }
  });
  
  function resizeIframe() {
    var me = window.name;
    if (me) {
      var iframes = parent.document.getElementsByName(me);
      if (iframes && iframes.length == 1) {
        height = document.body.offsetHeight;
        iframes[0].style.height = height + "px";
      }
    }
  }
  
});
</script>
 
<style>
#map {
  font-family: Arial;
  font-size:12px;
  line-height:normal !important;
  height:500px;
  background:transparent;
}
</style>
 
</head>
 
<body>
<div id="map"></div> 
</body> 
</apex:pageBlock>
</apex:page>

How To use Extensions In Visualforce page in Salesforce


Visualforce page


<apex:page standardController="Account" extensions="myextension">
    <p>{!title}</p>   
    <apex:form >
        <apex:inputField value="{!account.name}"/>

        <apex:commandButton value="Save" action="{!save}"/>
    </apex:form>
</apex:page>


extensions



public class myextension {
    private final account ac;
   
    public myextension(Apexpages.standardcontroller controller){
        this.ac =(Account)controller.getRecord();
    }
    public String getTitle(){
        return 'Account:' + ac.name + '(' + ac.id + ')';

    }
}





How To view or update three objects records in one visualforce page through custom controller




Visualforce page code

<apex:page controller="threeobjects">
    <apex:pageBlock >
    <apex:form >
    <apex:inlineEditSupport />
        <apex:pageBlockSection columns="3" >
            <apex:pageBlockTable value="{!accountname}" var="a">
                <apex:column headerValue="Accounts" >
                <apex:outputField value="{!a.name}"/>
                </apex:column>
            </apex:pageBlockTable>
            <apex:pageBlockTable value="{!contactname}" var="c">
                <apex:column headerValue="Contacts" >
                <apex:outputField value="{!c.name}"/>
                </apex:column>
            </apex:pageBlockTable>
            <apex:pageBlockTable value="{!opportunityname}" var="o">
                <apex:column headerValue="Opportunities" >
                <apex:outputField value="{!o.name}"/>
                </apex:column>
            </apex:pageBlockTable>
        </apex:pageBlockSection>
  
        <apex:commandButton value="Save" action="{!save}"/>
        </apex:form>
    </apex:pageBlock>
</apex:page>




Controller

public class threeobjects {
    public list<account> accountname{get; set;}
    public list<contact> contactname{get;set;}
    public list<opportunity> opportunityname{get; set;}

    public threeobjects(){
        accountname = [select name from account limit 10];
        contactname = [select name from contact limit 10];
        opportunityname = [select name from opportunity limit 10];
    }
    public PageReference save() {
        update accountname;
        update contactname;
        update opportunityname;
        return null;
    }
}