Я написал генератор изображений плитки для использования с overlay.getTileUrl(tileCoord,zoom), который работает, как и ожидалось, для типа карты Road_Map для уровней масштабирования до 21.
function tile2lng(x,z) { return (x/Math.pow(2,z)*360-180); }
function tile2lat(y,z) { var n=Math.PI-2*Math.PI*y/Math.pow(2,z);
return (180/Math.PI*Math.atan(0.5*(Math.exp(n)-Math.exp(-n)))); }
широта/долгота 37,21 / -77,26
Когда спутниковая карта масштабируется до уровня 18, координаты плитки для запрошенной плитки наложения рассчитываются как широта/долгота 27,37 / -77,26.
На самом деле, кажется, что есть два прохода при загрузке карты. Сначала широта/долгота тайла запрашивается правильно, затем происходит событие Projection_Changed, а затем повторно запрашиваются тайлы с неверно рассчитанными широтой/долготой. Кажется, что проекция спутниковых фрагментов, отображаемая при масштабе карты от 18 до 21, не является стандартной проекцией Google mercator. Как это изменение должно быть обнаружено с помощью overlay.getTileURL(coord,zoom)?
Как правильно рассчитать широту/долготу для спутниковых плиток, когда карта увеличена с 18 до 21?