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