Como obter o número de pixels igual a um raio do círculo Geozone de acordo com o nível de zoom? OU Raio do círculo da zona para exibir pixels?
Estou criando Geozones no google map. PadrãoCírculo que a API do mapa fornece fica atrasada ao rolar o mapa. Então, eu queria criar meu próprio círculo (sobreposição no mapa). Criei um círculo com raio de 300 metros que é fixo. A largura deste círculo deve mudar de acordo com o nível de zoom, como o círculo padrão do mapa. Eu escrevi um método como abaixo que calcula pixels tomando Radius e Zoom nível como parâmetros. Também adicionei o círculo padrão para verificar a precisão do meu círculo em diferentes endereços.
//Adjusts the width and height of circle according to radius and zoom level
private void adjustCircleWidth(final LatLng center, final double zoom) {
//With inputs from topic "Zoom" from https://developers.google.com/maps/documentation/android-api/views
double widthOfWorldDP = 256 * Math.pow(2, zoom);
int radius = 300; //meters.
int circleWidthMeters = radius * 2; // *2 to get diameter or width.
//From google and alsop from this SOF post http://stackoverflow.com/a/6452332/3209739
int EQUATOR_LENGTH_METERS = 40075004; //in meters..
float dpOfCircle = (float) ((widthOfWorldDP * circleWidthMeters) / EQUATOR_LENGTH_METERS);
//converts dp to pixels depending on device density..
int pixels = (int) convertDpToPixels(dpOfCircle);
mCircleView.requestLayout();
mCircleView.getLayoutParams().height = pixels;
mCircleView.getLayoutParams().width = pixels;
}
Bem, isso funciona bem. Comecei a verificar outros locais e ele começou a mostrar variações. A largura do círculo é menor que o círculo padrão do mapa. Eu o analisei para entender que ele é exibido perfeitamente (em sincronia com o círculo padrão) quando eu defino o círculo em qualquer local que esteja no Equador .. por exemplo, o círculo de exemplo está em perfeita sincronia com o padrão do Quênia, como o Quênia está no equador. veja o scrrenshot em anexo. Se eu me afastar do equador, o círculo ficará cada vez menor do círculo padrão. Digamos, para a Alemanha, como o círculo de localização é quase metade do círculo padrão ... veja a descrição em anexo.
Isso ocorre porque a fórmula que usei está ligada ao equador.
Você pode ajudar com alguma pista de como posso torná-lo uniforme?