Я переношу приложение iOS на Android и использую Google Maps Android API v2.
Приложению необходимо нарисовать на карте тепловую карту.
На данный момент кажется, что лучший вариант — использовать TileOverlay
и реализовать собственный TileProvider
. В методе getTile
моему методу задаются x, y и масштаб, и он должен возвращать растровое изображение в виде Tile
. Все идет нормально.
У меня есть массив элементов тепловой карты, которые я буду использовать для рисования радиальных градиентов на растровом изображении, каждый с широтой/долготой. У меня возникли проблемы со следующими двумя задачами:
- Как определить, содержит ли плитка, представленная x, y и масштабирование, широту/долготу элемента тепловой карты?
- Как преобразовать широту/долготу элемента тепловой карты в координаты x/y растрового изображения.
Спасибо за помощь!
ОБНОВЛЕНИЕ
Благодаря ответу MaciejGórski ниже и реализации marcin я смог получить ответ на 1-ю половину моего вопроса, но мне все еще нужна помощь со 2-й частью. Чтобы уточнить, мне нужна функция для возврата координат x/y плитки для указанной широты/долготы. Я безуспешно пытался отменить расчеты ответа Мацея Гурского и Марцина.
public static Point fromLatLng(LatLng latlng, int zoom){
int noTiles = (1 << zoom);
double longitudeSpan = 360.0 / noTiles;
double mercator = fromLatitude(latlng.latitude);
int y = ((int)(mercator / 360 * noTiles)) + 180;
int x = (int)(latlng.longitude / longitudeSpan) + 180;
return new Point(x, y);
}
Любая помощь приветствуется!