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

Respuesta
 
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
  #2  
Antiguo 16-01-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Hola de nuevo,

Ya he conseguido hacer funcionar algo haciendo los siguientes cambios. Para empezar no se encontraba la variable map (el mapa en sí) porque estaba definida como una variable local, entonces al llamarla desde otra función pues no la encontraba. La solución de esto ha sido fácil, la he sacado de la función en la que estaba y la he declarado como variable global en el script de inicialización. Después he incluido en el script de inicialización una función llamada placemarkt y he añadido allí el código del script1 y en el script1 simplemente he puesto la llamada a la función y la cosa es q ha funcionado.
Algo más he avanzado...
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #3  
Antiguo 18-01-2009
madiazg madiazg is offline
Miembro
 
Registrado: sep 2005
Ubicación: Canarias
Posts: 120
Poder: 19
madiazg Va por buen camino
Hola,
yo hace algún tiempo intenté interactuar con google maps pero no saqué nada en claro. Lo que pretendía era los contrario a lo que tú estás desarrollando. Concretamente, quiero marcar una posición del mapa y capturar las coordenadas de dicha posición para utilizarlas en mi programa.
¿A alguien se le ocurre la forma de hacerlo?

En cuanto a mostrar un posición determinada en un mapa lo he resuelto generando un fichero html temporal con la posición que pretendo mostrar en el mapa y las características de éste. Luego sólo tengo que cargar el fichero en el TWebBrowser.

En esta dirección puedes apreciar como queda el mapa en la aplicación:
http://imagen3d.site88.net/ayuda.htm...onamiento.html

Saludos...
Miguel Angel
http://imagen3d.site88.net/
Responder Con Cita
  #4  
Antiguo 19-01-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Hola Miguel Angel,

Ahora que ya he conseguido situar algún placemark en el Google Map intentaré ir más allá. Por supuesto si averiguo como capturar las coordenadas te lo diré. Espero que tu hagas lo mismo puesto que me interesa jeje. Yo estoy recién comenzando con el api de Google Map y eso así que supongo que iré lento.
Yo te recomendaría que le echases un vistazo a los ejemplos del api del plugin de Google Earth sobretodo a la parte de los eventos de placemark. Ahí activando los eventos y haciendo click sobre un placemark (para ello corre tb el ejemplo de crear un placemark) salen una serie de datos como la lon/lat. El como recoger estos datos desde tu aplicación delphi no tengo ni idea de si se puede hacer directamente, si no se me ocurre escribir estos datos sobre un fichero y después leerlos con tu aplicación.
Saludos y suerte... y no te olvides de darme ideas!!!
Saludos.
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #5  
Antiguo 20-01-2009
madiazg madiazg is offline
Miembro
 
Registrado: sep 2005
Ubicación: Canarias
Posts: 120
Poder: 19
madiazg Va por buen camino
A raíz de este hilo ( http://www.clubdelphi.com/foros/showthread.php?t=62883) voy a intentar investigar un poco por esta línea. Si consigo averiguarlo te lo comento.
Un Saludo....
Miguel Angel
Responder Con Cita
  #6  
Antiguo 20-01-2009
Avatar de StartKill
StartKill StartKill is offline
Miembro
 
Registrado: ene 2004
Posts: 299
Poder: 21
StartKill Va por buen camino
Saludos

Tambien deseamos hacer lo mismo -> Delphi con maps-google...., encontramos código en internet (javascrip, html) y lo ajustamos a la necesidad planteada....

Basicamente es diferente a lo que exponen en sus códigos...

Pero no muy satisfechos hicimos la pregunta como leer un componente de una pagina web, la misma que encontró nuestro amigo madiazg -- en el link encontrarán la repuesta dada por el amigo Roman

Les adjuntamos el archivo mapis.zip, es lo poco que logramos hacer en casa, hay que mejorarlo pero ya es una idea.

Si fueran tan amables de compartir sus codigos para aprender de ellos .

Ss.

StartKill
Lima-Perú
Archivos Adjuntos
Tipo de Archivo: zip Mapis.zip (21,1 KB, 177 visitas)
Responder Con Cita
  #7  
Antiguo 24-01-2009
madiazg madiazg is offline
Miembro
 
Registrado: sep 2005
Ubicación: Canarias
Posts: 120
Poder: 19
madiazg Va por buen camino
Hola,
yo para programar utilizo TurboDelphi por lo que no he podido ejecutar el programa que has anexado.
Para la información de la API de Google Maps yo me he basado en la información obtenida de desarrolloweb.com.
De esta forma, he generado un programa de prueba para obtener las coordenadas:
googlemaps.zip
Saludos...
Miguel Angel
Imagen3D

Última edición por madiazg fecha: 24-01-2009 a las 13:15:57.
Responder Con Cita
  #8  
Antiguo 15-12-2009
Avatar de edgwin
edgwin edgwin is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guadalajara Jal. Mex
Posts: 163
Poder: 19
edgwin Va por buen camino
Cita:
Empezado por madiazg Ver Mensaje
Hola,
yo para programar utilizo TurboDelphi por lo que no he podido ejecutar el programa que has anexado.
Para la información de la API de Google Maps yo me he basado en la información obtenida de desarrolloweb.com.
De esta forma, he generado un programa de prueba para obtener las coordenadas:
googlemaps.zip
Saludos...
Miguel Angel
Imagen3D
Que tal madiazg, la liga del archivo adjunto esta rota, podrias enviarme el ejemplo por mail: edgwin@gmail.com.

Gracias!
Responder Con Cita
Respuesta



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 10:05:13.


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