Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   HTML, Javascript y otros (https://www.clubdelphi.com/foros/forumdisplay.php?f=38)
-   -   Pasar Variables a Delphi (https://www.clubdelphi.com/foros/showthread.php?t=84165)

marcial 17-09-2013 11:47:53

Pasar Variables a Delphi
 
Hola a todos:
He tenido que reprogramar una aplicación para localización de direcciones que funcionaba perfectamente y usaba GoogleMaps api V2 a la api V3. Mi problema ahora es que defino en mi programa como parte de una funcion JavaScript lo siguiente:

' var lat = new google.maps.LatLng(results[0].geometry.location.lat());'+
' var lng = new google.maps.LatLng(results[0].geometry.location.lng());'+

Pero luego no soy capaz de pasar las variables LAT y LNG (que despues del acceso a GoogleMaps ya tienen los valores) a unos edit en mi programa Delphi para poder por ejemplo grabarlas en un fichero.

la llamada es
Código Delphi [-]
HTMLWindow2.execScript(Format('codeAddress(%s)',[QuotedStr(address)]), 'JavaScript');
donde CodeAddress es la funcion java que llama a google y Address es la dirección a buscar.
Trabajo con D5
¿Podríais ayudarme?
Muchas gracias a todos

Neftali [Germán.Estévez] 17-09-2013 12:14:58

Aquí tienes un ejemplo de uso básico de la API v3 de Google Maps, desde Delphi.
Ahí puedes ver cómo trabajar con Lat y Long en un mapa.

marcial 17-09-2013 12:46:56

Gracias Neftali. Ese es justo el ejemplo en el que me he basado. En él se define la posición como 'position: results[0].geometry.location' y yo lo he cambiado por

' var latlng = new google.maps.LatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng());'+
' var lat = new google.maps.LatLng(results[0].geometry.location.lat());'+
' var lng = new google.maps.LatLng(results[0].geometry.location.lng());'+

y el marker lo pinto en "Position: latlng".

Así cargo las variables latlng, lat y lng en el script. Pero lo que necesito es cómo le paso el valor que tenga lat y lng a dos variables o dos labeles o dos edit en delphi para poder grabarlos en un fichero junto con el nombre y dirección del cliente.

Gracias

Neftali [Germán.Estévez] 17-09-2013 13:15:23

A ver si te sirve este.

marcial 17-09-2013 20:22:14

Estoy en ello. Tengo que modificar cosas (propiedades de objetos que no tiene D5, XPman, etc) pero estoy probando cosas. Mañana contesto.
Muchas gracias

marcial 18-09-2013 21:05:20

Hola otra vez
He estado probando todo el dia con el ejemplo propuesto y si, obtengo las coordenadas; pero... sólamente cuando se dispara un evento, en este caso el "clik" en el mapa.
Mi programa delphi lo que hace es recorrer un fichero y cada vez que lee un registro hace una llamada a script que pinta la marca. Eso lo hace bien pero no obtengo las coordenadas para almacenarlas.
Lo que que yo lo que necesito que cada vez que se pinte una marca, se dispare un listener o algo que me haga poder almacenar las coordenadas de la marca que acaba de pintar y poder llevarlas al TListView o al fichero o a donde sea. Esto es lo que no he podido hacer.
Seguiré intentando, pero si alguien sabe cómo hacerlo, se lo agradecería un montón.
Gracias

dec 18-09-2013 22:38:45

Hola,

A ver si el artículo "How to call JavaScript functions in a TWebBrowser from Delphi", en Delphi Dabbler, puede serte útil.

Concretamente, pienso que igual puedes adaptar lo que se describe en el apartado "Getting the Return Value".

marcial 19-09-2013 08:48:22

Bueno, parece que ya he solucionado el tema de las coordenadas cada vez que se pinta una marca.

Por cada uno de los clientes en un bucle hago:

Primero centro el mapa con un "map.SetCenter"
Luego pinto la Marca en la posicion que sea con var marker = new google.maps.Marker
y luego disparo un evento con google.maps.event.addListener(map, "center_changed", '
definiendo en "latValue" y "lngValue" la posición con document.getElementById("latValue").value = results[0].geometry.location.lat();'+
document.getElementById("lngValue").value = results[0].geometry.location.lng);'+

Y por último recupero las variables con la función

function GetIdValue(const Id : string):string; del último ejemplo que propuso Neftalí.

Es cuestión de ir puliendo pero puede ser algo para empezar.

Gracias.

Neftali [Germán.Estévez] 19-09-2013 10:10:53

^\||/^\||/


La franja horaria es GMT +2. Ahora son las 18:31:23.

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