En las líneas 672 y 673 se aplica formato a la dirección como un objeto 

String

, para usarlo con la API 

de Google Maps. En la línea 219 se hace una llamada al método 

geoCode

 del componente 

Geocoding Service 

Object

 con la dirección como argumento. Este método devuelve un arreglo de objetos 

GeoPoint

 que representen 

ubicaciones que coincidan con el parámetro dirección. Los objetos 

GeoPoint

proporcionan la latitud y longitud 

de una ubicación dada. Suministramos una dirección completa con la calle, ciudad, estado y código postal como 
argumento para 

geoCode

, por lo que el arreglo devuelto contendrá sólo un objeto 

GeoPoint

. En la línea 679 se 

determina si el arreglo de objetos 

GeoPoint

 es 

null

. De ser así, la dirección no se podría encontrar, y en las líneas 

681 a 683 se muestra un mensaje en el componente 

Message Group

, informando al usuario sobre el error de 

búsqueda, se oculta el componente 

Map Viewer

 y se devuelve 

null

 para terminar el procesamiento.

En las líneas 687 a 688 se establecen la latitud y la longitud del centro del componente 

Map Viewer

, en 

relación con la latitud y longitud del objeto 

GeoPoint

 que representa a la dirección seleccionada. En las líneas 

691 a 694 se establecen la latitud y longitud del componente 

Map Marker

, y se establece el texto a mostrar en 

el marcador. En la línea 696 se muestra el mapa vuelto a centrar, que contiene el componente 

Map Marker

 que 

indica la ubicación del contacto.

 

664    

String ciudad = (String) busquedaDireccionesDataProvider.getValue( 

 

665      

"ADDRESSES.CITY"

 );

 

666    

String estado = (String) busquedaDireccionesDataProvider.getValue( 

 

667     

 "ADDRESSES.STATE"

 );

 

668    

String cp = (String) busquedaDireccionesDataProvider.getValue( 

 

669      

"ADDRESSES.ZIP"

);

 670 
 671 

 

 

 

// aplica formato a la dirección para Google Maps

 672 

 

 

 

String direccionGoogle = calle + 

"

,

"

 + ciudad + 

"

,

"

 + estado + 

 

673      

" "

 + cp;

 674 

 

 

 675 

 

 

 

// obtiene los puntos geográficos para la dirección

 676 

 

 

 

GeoPoint puntos[] = geoCoder.geoCode( direccionGoogle );

 677 
 678 

 

 

 

// si Google Maps no puede encontrar la dirección

 679 

 

 

 

if

 ( puntos == 

null

 )

 680 

 

 

 

{

 

681      

error(

"El mapa para "

 + direccionGoogle + 

" no se pudo encontrar"

);

 

682      

mapViewer.setRendered(

false

 ); 

// oculta el mapa

 

683      

return null

;

 684 

 

 

 

}

// fin de if

 685 

 

 686 

 

 

 

// centra el mapa para la dirección dada

 687 

 

 

 

mapViewer_center.setLatitude( puntos[ 

0

].getLatitude() );

 688 

 

 

 

mapViewer_center.setLongitude( puntos[ 

0

 ].getLongitude() );

 689 
 690 

 

 

 

// crea un marcador para la dirección y establece su texto a mostrar

 691 

 

 

 

mapMarker.setLatitude( puntos[ 

0

 ].getLatitude() );

 692 

 

 

 

mapMarker.setLongitude( puntos[

 0

 ].getLongitude() );

 693 

 

 

 

mapMarker.setMarkup( pnombre + 

" "

 + apaterno + 

"<br/>"

 + calle +

 

694      

"<br/>"

 + ciudad + 

"

,

"

 + estado + 

""

 + cp );

 695 
 696 

 

 

 

mapViewer.setRendered(

true

 ); 

// muestra el mapa

 697 

 

 

}

// fin de try

 698 

 

 

catch

 ( Exception e )

 699 

 

 

{

 700 

 

 

 

error(

"Error al procesar busqueda. "

 + e.getMessage() );

 701 

 

 

}

// fin de catch

 702 

 

 

 703 

 

 

return null

;

 704 

 

}

// fin del método buscarBoton_action

 705 

}

// fin de la clase LibretaDirecciones

Figura 27.16

  |  Bean de página que obtiene un mapa para mostrarlo en el componente 

MapViewer

. (Parte 4 de 4).

27.5 Componente 

MapViewer

 de Google Maps 

1205

27_MAQ_CAP_27_DEITEL.indd1205

5/8/084:17:46PM