Calcular las coordenadas GPS de los lados de la calle en un mapa

Introduzca aquí la descripción de la imagen

Tengo la coordenada GPS del usuario en un mapa (indicado por punto rojo en la imagen)

Me gustaría calcular las coordenadas GPS de los puntos azules en el mapa.

Los puntos son equidistantes del punto rojo de cada lado. Si puedo conseguir el título de la calle en comparación con el norte magnético puedo calcular los puntos o hay alguna otra manera fácil?

(He probado que utilizar la versión de mapa 1 , no mapa de api V2.)

Antes de seguir los pasos, debe conocer la distancia y el ángulo antes de encontrar las coordenadas.

Pasos:

  1. Cambie el punto geográfico a píxel (x, y). (Usar proyección )

  2. Obtener el tamaño de píxel de la distancia (d). (Use metersToEquatorPixels )

  3. Entonces obtienes un punto (d, 0)

  4. Rotar (d, 0) ==> Se obtendrá un nuevo punto que se espaciará en d de (0, 0) ==> (a, b)

  5. (X + a, b + y) es un punto que usted desea.

  6. Obtener coordenadas geográficas de (x + a, y + b) utilizar esto .

El formulario de rotación es

(x'*cos(θ) - y'*sin(θ), x'*sin(θ) + y'*cos(θ)) 

Así, usted puede cambiar esto simple.

 (d*cos(θ), d*sin(θ)) // This is a point of step 4. (a,b) 

Mi código es.

 // you should know distance and angle Point px = new Point(); Point px2 = new Point(); mapView.getProjection().toPixels(mGeoPt, px); float pixedDis = mapView.getProjection().metersToEquatorPixels(distance); px2.x = (int)(pixedDis*Math.cos(angle)) + px.x; px2.y = (int)(pixedDis*Math.sin(angle)) + px.y; GeoPoint gp3 = mapView.getProjection().fromPixels(px2.x, px2.y); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.