Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-01-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Ejecutar Javascript con Delphi para Google Maps

Hola a todos,

Estoy investigando un poco sobre como integrar Google Maps en una aplicación Delphi. He visto varios hilos sobre el tema y me dejan claro como insertar el mapa en mi aplicación. Ahora mi problema es que quiero en tiempo de ejecución insertar placemarks (puntos) en el mapa y no sé como hacerlo. No tengo idea de Javascript, pero reutilizando el código de los ejemplos de Google pensé que sería capaz de apañarme. Ahora mi problema tb es como ejecutar el código de javascript desde mi aplicación Delphi. En otro hilo he visto que se usa execScript, pero cuando yo lo he usado para añadir un placemark me ha dado un error de que no se encuentra la variable map que es cargada en el script de iniciación. Os dejo el código a ver si alguien sabe como insertar un placemark ejecutando código javascript.
Mi formulario consta de un TWebBrowser y de un botón. Quiero que cuando se pulse el botón se ejecute el código de un script que tengo en un fichero.

Código Delphi [-]
procedure TPrincipalForm.Button1Click(Sender: TObject);
var
  Doc2: IHTMLDocument2;
  Code : String;
  FScript : TStringList;
  I : Integer;
begin
  FScript := TStringList.Create;
  FScript.LoadFromFile(RutaFicheros+'/Script1.html');
  with WebBrowser1.Document as IHTMLDocument2 do
    with parentWindow do
      for I := 0 to FScript.Count - 1 do
        execScript(FScript.Strings[i], 'JavaScript');
  FScript.Free;
end;
procedure TPrincipalForm.FormCreate(Sender: TObject);
begin
  RutaFicheros := ExtractFileDir(ParamStr(0));
  WebBrowser1.Navigate('http://localhost/Pruebas_Google_MAps/index.html');
end;

El código del script que quiero que se ejecute cuando se pulse el botón es el siguiente tomado de un ejemplo de Google que crea 10 placemarkts

var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
for (var i = 0; i < 10; i++) {
var point = new GLatLng(southWest.lat() + latSpan * Math.random(),
southWest.lng() + lngSpan * Math.random());
map.addOverlay(new GMarker(point));

La página de inicio que carga el navegador es:

<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Control Initialization</title>
<script src="http://maps.google.com/maps?file=api&amp;"type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[

function initialize() {
if (GBrowserIsCompatible()) {
// define the crosshair tile layer and its required functions
var crossLayer = new GTileLayer(new GCopyrightCollection(""), 0, 15);
crossLayer.getTileUrl = function(tile, zoom) {
return "./include/tile_crosshairs.png";
}
crossLayer.isPng = function() {return true;}

// Create a new map type incorporating the tile layer
var layerTerCross = [ G_PHYSICAL_MAP.getTileLayers()[0],
crossLayer ];
var mtTerCross = new GMapType(layerTerCross,
G_PHYSICAL_MAP.getProjection(), "Ter+");

var map = new GMap2(document.getElementById("map_canvas"),
{ size: new GSize(1080,930) } );
map.addMapType(G_PHYSICAL_MAP);
map.addMapType(mtTerCross);
map.addMapType(G_SATELLITE_3D_MAP);
map.setCenter(new GLatLng(40,-3.5), 7); // posicion inicial
map.addControl(new GLargeMapControl())

var mapControl = new GHierarchicalMapTypeControl();

// Set up map type menu relationships
mapControl.clearRelationships();
mapControl.addRelationship(G_SATELLITE_MAP, G_HYBRID_MAP, "Labels", false);
mapControl.addRelationship(G_PHYSICAL_MAP, mtTerCross, "Crosshairs");

// Add control after you've specified the relationships
map.addControl(mapControl);



}
}
//]]>
</script>
</head>

<body onload="initialize()" onunload="GUnload()">
<div id="map_canvas" style="float:left; width: 100%; height: 100%"></div>
</body>
</html>


Gracias de antemano!!!
__________________
"Patientia et constantia taelecum"
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Interactuar entre Google maps y Delphi madiazg Varios 2 09-11-2008 04:16:45
Google Maps madiazg Varios 4 26-10-2008 22:03:41
google maps MOCOSO07 Varios 2 06-08-2008 18:08:22
Google maps y php halizia PHP 2 16-03-2007 17:04:49
Google Maps .es Neftali [Germán.Estévez] Noticias 0 27-04-2006 13:32:54


La franja horaria es GMT +2. Ahora son las 18:13:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi