|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  Raspberry Pi Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  AutoIt (Programación) Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

B4A en español - Juan Antonio Villalpando
(BASIC4Android)

-- Tutorial de B4A --

Volver al índice del tutorial

____________________________

52B.- Mapa de Google y archivos. Street View.

- Esta página es una continuación de la anterior referente a los mapas de Google. Vamos a ver otras posibilidades.

- En este caso construiremos un "Layout" con: EditText1, EditText2, Button1 y Button2, como se encuentra en la imagen derecha.


- Escribimos las coordenadas, pulsamos "Guardar" y "Ver" y obtendremos un Street View.

 

 

Es conveniente ver los ejemplos de la API de los mapas de Google,. Concretamente este ejemplo.

 

 

Para ello visualizamos su código, especialmente los carácteres que están en rojo en negrita.

 

Observamos las coordenadas, y abajo las dimensiones de la pantalla.


Código de Street View de Google.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Google Maps JavaScript API v3 Example: Street View Controls</title>
    <link href="/maps/documentation/javascript/examples/default.css" rel="stylesheet">
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
    <script>
      function initialize() {
        var fenway = new google.maps.LatLng(42.345573,-71.098326);

        // Note: constructed panorama objects have visible: true
        // set by default.
        var panoOptions = {
          position: fenway,
          addressControlOptions: {
            position: google.maps.ControlPosition.BOTTOM
          },
          linksControl: false,
          panControl: false,
          zoomControlOptions: {
            style: google.maps.ZoomControlStyle.SMALL
          },
          enableCloseButton: false
        };

        var panorama = new google.maps.StreetViewPanorama(
            document.getElementById('pano'), panoOptions);
      }
    </script>
  </head>
  <body onload="initialize()">
    <div id="pano" style="width: 350px; height: 480px"></div>
  </body>
</html>
      

Este archivo lo voy a dividir en dos partes: parte1.txt y parte2.txt

Fíjate que los he dividido por la parte de las coordenadas que he eliminado: 42.345573,-71.098326

parte1.txt

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Google Maps JavaScript API v3 Example: Street View Controls</title>
    <link href="/maps/documentation/javascript/examples/default.css" rel="stylesheet">
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
    <script>
      function initialize() {
        var fenway = new google.maps.LatLng(

parte2.txt
);

        // Note: constructed panorama objects have visible: true
        // set by default.
        var panoOptions = {
          position: fenway,
          addressControlOptions: {
            position: google.maps.ControlPosition.BOTTOM
          },
          linksControl: false,
          panControl: false,
          zoomControlOptions: {
            style: google.maps.ZoomControlStyle.SMALL
          },
          enableCloseButton: false
        };

        var panorama = new google.maps.StreetViewPanorama(
            document.getElementById('pano'), panoOptions);
      }
    </script>
  </head>
  <body onload="initialize()">
    <div id="pano" style="width: 350px; height: 480px"></div>
  </body>
</html>    

Estos dos archivos los copiaremos en la carpeta Files del proyecto.

Este es el código del programa...

Necesita un Layout con: EditText1, EditText2, Button1 y Button2

Copia y pega este código en un nuevo proyecto
Sub Process_Globals
' Juan Antonio Villalpando
' juana1991@yahoo.com

' marzo 2013
End Sub

Sub Globals
    Dim EditText1, EditText2 As EditText
    Dim latitud, longitud, todo As String    
    Dim WebView1 As WebView
End Sub

Sub Activity_Create(FirstTime As Boolean)
    WebView1.Initialize("WebView1")    
    Activity.AddView(WebView1, 0, 0, 100%x, 100%y)
    Activity.LoadLayout("Layout")
    EditText1.Text = 36.5286
    EditText2.Text = -6.189
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause(UserClosed As Boolean)

End Sub

Sub Button1_Click
    Dim mFilePath As String
    latitud = EditText1.Text
    longitud = EditText2.Text
    
    Dim parte1, parte2 As TextReader
    parte1.Initialize(File.OpenInput(File.DirAssets, "parte1.txt"))
    parte2.Initialize(File.OpenInput(File.DirAssets, "parte2.txt"))
    
    ' Toma los dos archivos, la longitud y la latitud y los une.
    todo = File.ReadString(File.DirAssets, "parte1.txt") & latitud & "," & longitud & File.ReadString(File.DirAssets, "parte2.txt")

    If File.ExternalWritable = True Then
        ' Hay tarjeta SD Card Instalada
        mFilePath = File.DirRootExternal
    Else
        ' No hay tarjeta SD Card
        mFilePath = File.DirInternal
    End If
    
    ' Guarda todo en el archivo todo.htm
    Dim tw As TextWriter
    tw.Initialize(File.OpenOutput(mFilePath, "todo.htm", False))

    tw.Write(todo)
    parte1.Close
    parte2.Close
    tw.Close

End Sub

Sub Button2_Click
    Dim mFilePath As String
    If File.ExternalWritable = True Then
        ' Hay tarjeta SD Card Instalada
        mFilePath = File.DirRootExternal
    Else
        ' No hay tarjeta SD Card
        mFilePath = File.DirInternal
    End If
    
    If File.Exists(mFilePath, "todo.htm") = True Then
        Dim tr As TextReader
        tr.Initialize(File.OpenInput(mFilePath, "todo.htm"))
    End If    
    
    WebView1.LoadUrl("file://" & mFilePath & "/todo.htm")
    tr.Close
End Sub

________________
- Comentarios.

- Escribimos la latitud y la longitud en los casilleros. Pulsamos el botón "Guardar" para que se guarde esa información en el archivo "todo.htm". Luego pulsamos el botón "Ver" para ver ese archivo como página web.

- Debemos poner coordenadas que se encuentren en el callejero de Street View. Si ponemos coordenadas que no se encuentran en el callejero saldrá la web en blanco. Se puede adaptar facilmente el código para que en vez de actuar con el Street View, actúe con mapas de satélite y carreteras.

- El algoritmo toma los archivos parte1.txt y parte2.txt, además de las coordenadas escrita en los casilleros y los une:

todo = parte1.txt & latitud & , & longitud & parte2.txt
todo = File.ReadString(File.DirAssets, "parte1.txt") & latitud & "," & longitud & File.ReadString(File.DirAssets, "parte2.txt"

- Esto lo guarda en el archivo todo.htm
tw.Initialize(File.OpenOutput(mFilePath, "todo.htm", False))
tw.Write(todo)

- Con el botón "Ver" presentamos el archivo todo.htm como web
WebView1.LoadUrl("file://" & mFilePath & "/todo.htm")

- Los archivos parte1.txt y parte2.txt se encuentran en la carpeta de solo lectura Files del proyecto. (File.DirAssets)

- El programa consulta si exite SDCard: (File.DirRootExternal) o no: (File.DirInternal) y guarda el archivo todo.htm en uno de los dos lugares.

________________________________________________

2.- Otra manera parecida al anterior.

Los archivos parte1txt y parte2.txt lo copias en la carpeta Files.
En este caso en el todo.htm utilizo dos variables para la Latitud y Longitud.

parte1.txt
<html>
<head>
<style type='text/css'>  
    html { height: 100% }  
    body { height: 100%; margin: 0px; padding: 0px }
    #map_canvas { height: 100% }
</style>
<script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=true&libraries=drawing'></script>  
<script type='text/javascript'>

El programa concatenará estos dos archivos y entre ellos escribirá esta línea:

Lati = 36.5; Longi = -6.1;

todo = File.ReadString(File.DirAssets, "parte1.txt") & " Lati = " & latitud & "; Longi = " & longitud & ";" & File.ReadString(File.DirAssets, "parte2.txt")

parte2.txt
  
    var drawingManager; var myLatlng = new google.maps.LatLng(Lati, Longi);
    var map; 
    function initialize() {map = new google.maps.Map(document.getElementById('map_canvas'), {zoom: 12,center: myLatlng, mapTypeId:
google.maps.MapTypeId.TERRAIN, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.DROPDOWN_MENU }, disableDefaultUI:
true,zoomControl: true,streetViewControl: true, scrollwheel: true, disableDoubleClickZoom: false, draggable:
true, keyboardShortcuts: true, mapTypeControl: true,navigationControl: true, scaleControl: true, mapTypeControlOptions:
{ style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.TOP_RIGHT },navigationControlOptions:
{ style: google.maps.NavigationControlStyle.DEFAULT }}) google.maps.event.addListener(map, 'click', function (mouseEvent) { var lat=mouseEvent.latLng.lat();
var lng=mouseEvent.latLng.lng(); juanantonio.CallSub('LatitudLongitud', true, lat, lng); }); var marker1 = new google.maps.Marker({ position: new google.maps.LatLng(Lati, Longi), map: map, title: 'A',
clickable: true, draggable: true, icon: 'http://www.google.com/mapfiles/arrow.png' });} google.maps.event.addDomListenerOnce(window, 'load', initialize); </script> </head> <body onload=initialize()> <div id='map_canvas' style='width:100%; height:100%'> </div> </body>

- Este es el código del programa...

Necesitas un Layout con: EditText1, EditText2, Button1 y Button2

Copia y pega este código en un nuevo proyecto
Sub Process_Globals
' Juan Antonio Villalpando
' juana1991@yahoo.com

' marzo 2013
End Sub

Sub Globals
    Dim EditText1, EditText2 As EditText
    Dim latitud, longitud, todo As String    
    Dim WebView1 As WebView
End Sub

Sub Activity_Create(FirstTime As Boolean)
    WebView1.Initialize("WebView1")    
    Activity.AddView(WebView1, 0, 0, 100%x, 100%y)
    Activity.LoadLayout("Layout")
    EditText1.Text = 36.5286
    EditText2.Text = -6.189
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause(UserClosed As Boolean)

End Sub

Sub Button1_Click
    Dim mFilePath As String
    latitud = EditText1.Text
    longitud = EditText2.Text
    
    Dim parte1, parte2 As TextReader
    parte1.Initialize(File.OpenInput(File.DirAssets, "parte1.txt"))
    parte2.Initialize(File.OpenInput(File.DirAssets, "parte2.txt"))
    
    ' Toma los dos archivos, la longitud y la latitud y los une.
 todo = File.ReadString(File.DirAssets, "parte1.txt") & " Lati = " & latitud & "; Longi = " & longitud &  ";" & File.ReadString(File.DirAssets, "parte2.txt")

    If File.ExternalWritable = True Then
        ' Hay tarjeta SD Card Instalada
        mFilePath = File.DirRootExternal
    Else
        ' No hay tarjeta SD Card
        mFilePath = File.DirInternal
    End If
    
    ' Guarda todo en el archivo todo.htm
    Dim tw As TextWriter
    tw.Initialize(File.OpenOutput(mFilePath, "todo.htm", False))

    tw.Write(todo)
    parte1.Close
    parte2.Close
    tw.Close

End Sub

Sub Button2_Click
    Dim mFilePath As String
    If File.ExternalWritable = True Then
        ' Hay tarjeta SD Card Instalada
        mFilePath = File.DirRootExternal
    Else
        ' No hay tarjeta SD Card
        mFilePath = File.DirInternal
    End If
    
    If File.Exists(mFilePath, "todo.htm") = True Then
        Dim tr As TextReader
        tr.Initialize(File.OpenInput(mFilePath, "todo.htm"))
    End If    
    
    WebView1.LoadUrl("file://" & mFilePath & "/todo.htm")
    tr.Close
End Sub

 

Más sobre mapas de Google

Más sobre API de Google Maps

________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información