En cuanto a lo que escribe el usuario en el cuadro de entrada que está asociado con Autocomplete
dev-guide, no hay mucho que pueda hacer para controlar lo que escriben. Sin embargo, cuando configura el Autocomplete
api-doc, puede definir opciones que controlan los resultados que volverán. La clave para usted será configurar la opción types
correctamente.
específica a su pregunta # 1, puede restringir los resultados que vendrán de vuelta en el Autocomplete
a direcciones mediante el establecimiento de types
-geocode
como se muestra en este ejemplo:
var defaultBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(-33.8902, 151.1759),
new google.maps.LatLng(-33.8474, 151.2631));
var input = document.getElementById('searchTextField');
var options = {
bounds: defaultBounds,
types: ['geocode']
};
autocomplete = new google.maps.places.Autocomplete(input, options);
específica a su pregunta # 2, puede restringir los resultados que vuelven a aparecer en el Autocomplete
a las ciudades mediante el establecimiento de types
a cities
como se muestra aquí:
var input = document.getElementById('searchTextField');
var options = {
types: ['(cities)'],
componentRestrictions: {country: 'fr'}
};
autocomplete = new google.maps.places.Autocomplete(input, options);
Observe también que debido a que el Autocomplete
se ha restringido a (cities)
, he añadido un especificador componentRestrictions
para establecer el país en el que la búsqueda de ciudades (en este caso, Francia) y se retira el especificador bounds
.
específica a su pregunta # 3, puede crear dos tablas, una para almacenar City de datos, y el otro para almacenar Dirección de datos, como se muestra en el siguiente diagrama UML:
base a la descripción en su pregunta, hay algunos aspectos clave de este diseño:
- Existe una relación de uno a varios desde
City
hasta Address
. Esto le permitirá asociar muchos registros Address
a un único registro City
. También hará que sea sencillo recuperar todos los registros Address
que se hayan ingresado para cualquier City
.
- La relación entre
Address
y City
dice que para cada Address
, debe existir un City
. Esto significa que cuando un usuario ingresa un Address
, debe realizar las siguientes acciones: 1 - Verifique si el City
para el Address
ya existe en la base de datos. 2 - Si el City
existe existe, recupere su ID
y utilícelo como el valor de la clave foránea City-ID
cuando almacene el nuevo Address
. 3 - Si el City
no existe existe, se debe crear un nuevo ID
único para el City
y el City
en la base de datos. Entonces el ID
para el City
se puede utilizar como el valor de la clave externa City-ID
al almacenar el Address
. Asegurándose de que cada Address
tenga asociado City
responde una de las preguntas que hace como parte de su pregunta n. ° 3: ¿Cómo puedo encontrar el resultado del primer usuario: "MyCity, MyStreet 12" usando la tecla "MyCity"? Porque cuando almacenó el registro "MyCity, MyStreet 12" Adress
, se aseguró de que exista un registro "MyCity" en la tabla City
. Recuperar el ID
para el City
es sencillo si otro usuario ingresa el mismo City
o Address
asociado con el mismo City
ingresado por un usuario en el futuro.
- La relación entre
City
y Address
dice que para cualquier City
puede haber cero o más registros Address
asociados. Esto garantiza que el usuario en su descripción que busca solo un City
puede almacenar el City
incluso si no se realizan búsquedas de seguimiento Address
. Se almacena el City
, tiene un ID
, y está esperando los nuevos registros Address
que pueden agregarse más tarde.
Por último, se pedirá una pregunta más como parte de la pregunta # 3: ¿Cómo puedo comprobar si la dirección totalmente pertenecen a la ciudad utilizando sólo los identificadores? Ser capaz de responder a esta pregunta es por qué hay una clave externa City-ID
que forma parte de cada registro Address
. Define claramente el City
que está asociado con cualquier Address
. Así que si usted tiene la ID
para un City
y la ID
para una Address
, la forma más sencilla de determinar si son un partido es: 1 - Recuperar el Address
de la base de datos utilizando la Address
ID
. 2 - Compare el valor City-ID
que forma parte del Address
que acaba de recuperar de la base de datos con el ID
para el City
con el que comenzó; si coinciden, usted sabe que el Address
está asociado con el City
y si no coinciden, puede estar seguro de que no existe relación entre ese Address
y City
.
No estoy del todo seguro de lo que está tratando de lograr con las direcciones y las ciudades, pero he tratado de darle una solución sólida que cubra las cosas que describe en su pregunta. Incluí una gran cantidad de detalles para que se aborden todos sus puntos y con la esperanza de que mi descripción sea clara y fácil de entender. Espero que esto le ayuda -
Agregué una aclaración. ¿Está claro ahora? Gracias – Naor
Sí, la aclaración adicional ayuda mucho. He agregado más contenido a mi respuesta original en función de su aclaración adicional. –
Su answear es excelente, excepto que esperaba conseguir una lista de calles de google para poder usar Autocompletar para las calles. Gracias por la creatividad :) – Naor