8 votos

Cómo calcular un nuevo cuadro delimitador que es el 80% del cuadro delimitador devueltos por google mapa?

Necesito mostrar un marcador para cada usuario que entra dentro de la parte visible del mapa de google. Para ello, me sale el cuadro delimitador del mapa de google, y los enviará a la base de datos y me aparece una lista de los usuarios que caen dentro de la caja. Entonces el bucle a través de la lista de usuarios y colocará un marcador en el mapa para cada usuario.

Todo funciona bien, sin embargo, si la lat/lng cae justo debajo del borde superior, a continuación, sólo la parte inferior del marcador es visible. Si la lat/lng cae para el lado de las fronteras, a continuación, sólo 1/2 de que el marcador esté visible.

Una forma de abordar este problema es el envío de una versión reducida del cuadro delimitador para la base de datos. De esta manera, tendríamos un cuadro delimitador con los márgenes, pero no muestran nada dentro de los márgenes.

Ahora, ¿cuál es la mejor manera de reducir la velocidad del cuadro delimitador antes de enviarlos a la base de datos?

¿Hay alguna manera mejor de hacer esto?

Comprobar la imagen, 1/2 de que el marcador esté oculto. (parte superior) enter image description here

4voto

Kearns Puntos 614

Primero le sugiero que eche un vistazo a la documentación de la geometría de la biblioteca

A continuación, aquí están los pasos que se recomiendan:

  1. Medir las dimensiones horizontal y vertical de los límites.
  2. Multiplicar ambos 0,1 así obtendrá el 10% del valor de cada uno.
  3. Calcular la distancia que va a utilizar para el desplazamiento de los nuevos límites de la esquina de coordenadas mediante el cálculo de la hipotenusa de un triángulo donde las dos piernas son dos de los 10% de los valores. Así se verá como leg1 pwr de 2 + leg2 pwr de 2 = hipotenusa al mp de 2 Simple pithagoras teorema.
  4. Ahora que usted tiene el valor de la hipotenusa, usted puede usar eso como una distancia de desplazamiento desde las dos esquinas de los límites: el suroeste y noreste. Uso > computeOffset(de:LatLng, distancia:número de partida:cantidad, radio?:número) de la biblioteca de google he hecho referencia anteriormente. Al calcular el desplazamiento por la esquina suroeste, utilizar un título valor de 45° y por el noreste, el uso de 225°
  5. Los pasos anteriores será el resultado de tener dos nuevos latlngs que usted puede usar para formar su nuevo, la reducción de los límites del objeto. Usted puede probar la funcionalidad de dibujo rectángulo de objetos, el uso de estos límites.

Creo que va a ser exactamente lo que usted necesita.

1voto

Swim Puntos 636

Me gustaría tratar el fitBounds método de la API de primera: https://developers.google.com/maps/documentation/javascript/reference#Map

La forma de sugerir iba a funcionar, pero las matemáticas para hacer no va a ser fácil.

1voto

Sam Puntos 11

Si la raíz de esta pregunta es para evitar el margen utilizado por Google Map API fitBounds() función, entonces le sugiero buscar en Google Maps V3 - Cómo calcular el nivel de zoom para un determinado límites pregunta en StackOverflow. Se le da una función para calcular directamente el nivel de zoom que se utilizan para el ajuste de los límites fijados en el área visible del mapa. Esta es una mejor truco, que la reducción de la caja de contorno para contrarrestar el efecto de la obligatoriedad de la margen utilizado fitBounds().

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X