You need to sign in to do that
Don't have an account?

display googlemaps in visualforce page using latitude/longitude values rather than address values
hi ive written a visualforce page to showmap from address fields but i want to do this from latitude and longitude fields
<apex:page standardController="Account"> <head> <script type="text/javascript" src="https://maps.google.com/maps/api/js?key=AIzaSyBmZQov1SBI9a3f9nWPwCS_cy37nPZIm9I&sensor=false"></script> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { var myOptions = { zoom: 18, mapTypeId: google.maps.MapTypeId.SATELLITE, mapTypeControl: false } var map; var marker; var geocoder = new google.maps.Geocoder(); /* var address = "{!Account.BillingStreet}, " + "{!Account.BillingCity}, " + "{!Account.BillingPostalCode}, " + "{!Account.BillingCountry}"; */ /* var latlng = ("{!Account.Latitude__c}", "{!Account.Longitude__c}"); */ /* var address = "{!Account.Longitude__c}, " + "{!Account.Latitude__c}; */ var address = "{!Account.Address__c}, " + "{!Account.city__c}, " + "{!Account.postal_code__c}, " + "{!Account.country__c}"; /* var lat = '{!Account.Latitude__c}'; var lng = '{!Account.Longitude__c}'; var latlng = new google.maps.LatLng(lat, lng); */ var infowindow = new google.maps.InfoWindow({ content: "<b>{!Account.Name}</b><br>{!Account.BillingStreet}<br>{!Account.BillingCity}, {!Account.BillingPostalCode}<br>{!Account.BillingCountry}" }); geocoder.geocode( { address: address}, function(results, status) { /* geocoder.geocode( { latlng: latlng}, 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' : '25px'}); $('#map').html("Oops! {!Account.Name}'s billing 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:250px; background:transparent; } </style> </head> <body> <div id="map"></div> </body> </apex:page>
Instead of using the google map api, better to use Apex Map which just provided by Salesforce in previous release,
Use This Tag in your visual force
Also refer (http://jessealtman.com/2015/02/new-spring-15-features-mapping/)
Hope this help
--
Thanks,
Swayam
Thanks for Sharing this info.
Regards,
Nida
Do have the working code for this. Can you please share with us.
Thanks in advance
https://support.formtitan.com/topics/Salesforce/Integration/Mapping_the_google_map_to_Salesforce
Swayam@SalesforceGuy
In my visualforce page map component is not available. It says Unknown component apex:map
<apex:page standardController="Property__c">
<head>
<script type="text/javascript" src="https://maps.google.com/maps/api/js?key=AIzaSyDS5llFUkQMqDCazEhB8ZiYMxjIbgNeIAA&sensor=false"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var myOptions={ zoom: 15,mapTypeId: google.maps.MapTypeId.ROADMAP,mapTypeControl: false };
var map;
var marker;
var geocoder = new google.maps.Geocoder();
var address ="{!Property__c.Address__c},{!Property__c.City__c}, {!Property__c.State__c}, {!Property__c.Zip_Code__c}";
var infowindow = new google.maps.InfoWindow({
content: "<b>{!Property__c.Name}</b><br>{!Property__c.Address__c}</br><br>{!Property__c.City__c}</br><br>{Property__c.State__c}</br><br>{!Property__c.Zip_Code__c}</br>"
});
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: "{!Property__c.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! {!Property__c.Name}'s billing 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:250px;
background:transparent;
}
</style>
</head>
<body>
<div id="map"></div>
</body>
</apex:page>
I would suggest using HTTP Callouts to get google map data, rather than using javascript in VF pages. You could schedule the job to run nightly to update Property__c.Location__c to keep it up to date (or even run a @future callout method at the insert/update trigger level)