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

Google Maps Error: Invalid field Candidate__r for SObject Position__c
I'm working on the Force.com workbook and in the Visualforce section the suggested code is to pull in a map using Yahoo maps that doesn't seem to work. I found some code for Google Maps and am trying to pull the map from Google Map and display it in a section inside the Position object. Below are the objects and my code. Any help is appreciated.
I have the following custom objects:
Candidate
Employment Website
Job Application
Position
Review (master object - Job Application)
Job Posting (master object - Position, Employment Website)
<apex:page standardController="Position__c">
This map shows the locations of candidates who have applied for the {!Position__c.Name} position.
<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: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false
}
var map;
var marker;
var geocoder = new google.maps.Geocoder();
var address = "{! Position__c.Candidate__r.Street__c}, " + "{! Position__c.Candidate__r.City__c}, " + "{! Position__c.Candidate__r.State_Province__c}, " + "{! Position__c.Candidate__r.Zip_Postal_Code__c}";
var infowindow = new google.maps.InfoWindow({
content: "<b>{! Position__c.Candidate__r.First.Name__c}}, " + "{! Position__c.Candidate__r.Street__c}, " + "{! Position__c.Candidate__r.City__c}, " + "{! Position__c.Candidate__r.State_Province__c}, " + "{! Position__c.Candidate__r.Zip_Postal_Code__c}"
});
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: "{! Position__c.Candidate__r.First.Name__c}}"
});
//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! {! Position__c.Candidate__r.First.Name__c}'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 have the following custom objects:
Candidate
Employment Website
Job Application
Position
Review (master object - Job Application)
Job Posting (master object - Position, Employment Website)
<apex:page standardController="Position__c">
This map shows the locations of candidates who have applied for the {!Position__c.Name} position.
<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: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false
}
var map;
var marker;
var geocoder = new google.maps.Geocoder();
var address = "{! Position__c.Candidate__r.Street__c}, " + "{! Position__c.Candidate__r.City__c}, " + "{! Position__c.Candidate__r.State_Province__c}, " + "{! Position__c.Candidate__r.Zip_Postal_Code__c}";
var infowindow = new google.maps.InfoWindow({
content: "<b>{! Position__c.Candidate__r.First.Name__c}}, " + "{! Position__c.Candidate__r.Street__c}, " + "{! Position__c.Candidate__r.City__c}, " + "{! Position__c.Candidate__r.State_Province__c}, " + "{! Position__c.Candidate__r.Zip_Postal_Code__c}"
});
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: "{! Position__c.Candidate__r.First.Name__c}}"
});
//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! {! Position__c.Candidate__r.First.Name__c}'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>
You have to add the it.
or is should be
{! Position__c.Candidate__r.First_Name__c}
It depends how you named your fields