Bonjour,
Comme premier essai de personnalisation de fiche, j'ai voulu essayer d'ajouter la géolocalisation de nos comptes sur une fiche de compte. Comme cela ne marche pas, j'aurais voulu savoir si ma démarche est bonne, ou à défaut savoir pourquoi cela ne fonctionne pas :
- J'ai fait Configuration / Développez / Page : Créer une nouvelle page dont le code est :
J'ai fait personnalisation de compte, créer une nouvelle page basée sur la page "défaut" et ajouté la page que je venais de créer à l'intérieur (comme un bloc). Déjà, est-ce une démarche normale pour personnaliser en ajoutant juste quelque chose sans avoir à recréer une page entièrement ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 <apex:page showHeader="false" sidebar="false" standardController="Account"> <script type="text/javascript" src="http://www.google.com/jsapi?key=AIzaSyC9PewP8xvWEIuZAYeBdGPgtDAZX6PGImw"></script> <script type="text/javascript"> google.load("maps", "2.x"); var addressPoint; // Fonction appelée quand la page a été chargée function initialize() { if (GBrowserIsCompatible()) { var map = new google.maps.Map2(document.getElementById("map")); map.addControl(new GSmallMapControl()); var address = "{!Account.BillingStreet}" + ", " + "{!Account.BillingCity}" + ", " + "{!Account.BillingState}"+"{!Account.BillingPostalCode}" + "," + "{!Account.BillingCountry}"; alert('adresse : >'+address+'<'); var geocoder = new GClientGeocoder(); geocoder.getLatLng(address, function(newPoint) { if (!newPoint) { $('#textAddress').html('Impossible de trouver la localisation du compte'); } else { map.setCenter(newPoint, 14); map.addOverlay(new GMarker(newPoint)); var marker = new GMarker(newPoint); map.addOverlay(marker); marker.openInfoWindowHtml("<div style=\"float:left;\"><div style=\"font-family: arial, san-serif; padding-left:30px;\"><span style=\"font-weight:bold;\">{!Account.Name}</span><br/>{!Account.BillingStreet}<br/>{!Account.BillingCity}, {!Account.BillingState} {!Account.BillingPostalCode}<br/><br/></div></div>"); } }); } } google.setOnLoadCallback(initialize); </script> <style> .locationGoogleMap { color:#4A4A56; font-family:arial,helvetica,sans-serif; font-size:12px; font-weight:bold; left:24.3%; position:relative; } #textAddress { color:#000000; font-family:arial,helvetica,sans-serif; font-size:18px; height:20px; left:40%; position:relative; } </style> <apex:outputpanel id="googleMap" layout="none"> <span id="textAddress"></span> <div id="contentMap" style="width: 100%; position:relative; margin-top:10px;"> <div id="map" style="height: 300px;"></div> </div> </apex:outputpanel> </apex:page>
La fiche paramétrée s'affiche bien en dehors de la carte google maps qui est vide...De plus, pas de messages mais le débogueur google me sort une erreur avec un dièse quelque chose inconnu...J'ai alors voulu vérifier l'adresse utilisée pour trouver la localisation en ajoutant le "alert" dans le code.
Le "alert" me montre que l'adresse est vide....donc les champs liés à Account (dans ma page) sont évalués comme vides alors que bien remplis dans la fiche "standard"...Ne peut-on pas utiliser le controller standard dans ce cas ? Comment faut-il procéder ?
Partager