Как это Google Расчет уровня масштабирования карт работает?

Я знаю, что такое вход и выход, но я ' м, просто не знаю, как и почему это работает.

Этот код используется для определения минимальной и максимальной долготы / широты (квадрат), который содержит набор точек, для определения максимального уровня масштабирования на Картах Google, который все еще будет отобразить все эти точки. Первоначального автора больше нет, поэтому я не уверен, для чего вообще нужны некоторые из этих чисел (например, 6371 и 8). Считайте это головоломкой = D

int mapdisplay = 322; //min of height and width of element which contains the map
double dist = (6371 * Math.acos(Math.sin(min_lat / 57.2958) * Math.sin(max_lat / 57.2958) + 
            (Math.cos(min_lat / 57.2958) * Math.cos(max_lat / 57.2958) * Math.cos((max_lon / 57.2958) - (min_lon / 57.2958)))));

double zoom = Math.floor(8 - Math.log(1.6446 * dist / Math.sqrt(2 * (mapdisplay * mapdisplay))) / Math.log (2));

if(numPoints == 1 || ((min_lat == max_lat)&&(min_lon == max_lon))){
    zoom = 11;
}
11
задан Gil Birman 2 May 2016 в 01:41
поделиться