Как в функции прописать ссылку до папки?

  • epol_pers
  • Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 11 months ago - 6 years 11 months ago #11362 by epol_pers
Как именно прописать ссылку на папку с тайлами в фукции?

function getNormalizedCoord(coord, zoom) {
if (!repeatOnXAxis) return coord;

var y = coord.y;
var x = coord.x;

// tile range in one direction range is dependent on zoom level
// 0 = 1 tile, 1 = 2 tiles, 2 = 4 tiles, 3 = 8 tiles, etc
var tileRange = 1 << zoom;

// don't repeat across Y-axis (vertically)
if (y < 0 || y >= tileRange) {
return null;
}

// repeat across X-axis
if (x < 0 || x >= tileRange) {
x = (x % tileRange + tileRange) % tileRange;
}

return {
x: x,
y: y
};

}


/*
* Main Core
*
*/

window.onload = function() {

// Define our custom map type
var customMapType = new google.maps.ImageMapType({
getTileUrl: function(coord, zoom) {
var normalizedCoord = getNormalizedCoord(coord, zoom);
if(normalizedCoord && (normalizedCoord.x < Math.pow(2, zoom)) && (normalizedCoord.x > -1) && (normalizedCoord.y < Math.pow(2, zoom)) && (normalizedCoord.y > -1)) {
return zoom + '_' + normalizedCoord.x + '_' + normalizedCoord.y + '.jpg';
} else {
return 'empty.jpg';
}
},
tileSize: new google.maps.Size(256, 256),
maxZoom: 6,
name: 'PS_Bramus.GoogleMapsTileCutter'
});

// Basic options for our map
var myOptions = {
center: new google.maps.LatLng(0, 0),
zoom: 2,
minZoom: 0,
streetViewControl: false,
mapTypeControl: false,
mapTypeControlOptions: {
mapTypeIds: ["custom"]
}
};

// Init the map and hook our custom map type to it
var map = new google.maps.Map(document.getElementById('map'), myOptions);
map.mapTypes.set('custom', customMapType);
map.setMapTypeId('custom');

}
Last edit: 6 years 11 months ago by epol_pers.

Please Log in or Create an account to join the conversation.

More
6 years 11 months ago - 6 years 11 months ago #11365 by Dima
Добрый день.
Тут, в принципе, ничего сложного.
В документации описан принцип создания сложного пользовательского типа карты (во второй части, не с самого начала)

wiki.zhuk.cc/index.php/Zh_GoogleMap_CustomMapType

В Вашем коде есть 2 вещи
- функция получения URL тайла - ее надо ввести в Get Tile URL function
- функция нормализации координат - ее надо ввести в Global scope секцию

Т.е. на закладке Global scope вносите функцию и декларацию переменной
Code:
var repeatOnXAxis = false; function getNormalizedCoord(coord, zoom) { if (!repeatOnXAxis) return coord; var y = coord.y; var x = coord.x; // tile range in one direction range is dependent on zoom level // 0 = 1 tile, 1 = 2 tiles, 2 = 4 tiles, 3 = 8 tiles, etc var tileRange = 1 << zoom; // don't repeat across Y-axis (vertically) if (y < 0 || y >= tileRange) { return null; } // repeat across X-axis if (x < 0 || x >= tileRange) { x = (x % tileRange + tileRange) % tileRange; } return { x: x, y: y }; }

А вот функцию для получения тайлов надо немного изменить
вместо
Code:
function(coord, zoom) { var normalizedCoord = getNormalizedCoord(coord, zoom); if(normalizedCoord && (normalizedCoord.x < Math.pow(2, zoom)) && (normalizedCoord.x > -1) && (normalizedCoord.y < Math.pow(2, zoom)) && (normalizedCoord.y > -1)) { return zoom + '_' + normalizedCoord.x + '_' + normalizedCoord.y + '.jpg'; } else { return 'empty.jpg'; } }

надо написать что-то типа
Code:
function(coord, zoom) { var normalizedCoord = getNormalizedCoord(coord, zoom); var baseURL = 'http://ваш_сайт/папка_карты/'; if(normalizedCoord && (normalizedCoord.x < Math.pow(2, zoom)) && (normalizedCoord.x > -1) && (normalizedCoord.y < Math.pow(2, zoom)) && (normalizedCoord.y > -1)) { baseURL += zoom + '_' + normalizedCoord.x + '_' + normalizedCoord.y + '.jpg'; return baseURL; } else { baseURL += 'empty.jpg'; return baseURL; } }

Don't forget support my developments: post review in JED , donate , help with translation ;)
Last edit: 6 years 11 months ago by Dima.

Please Log in or Create an account to join the conversation.

  • epol_pers
  • Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 11 months ago #11379 by epol_pers
В итоге серый фон и ничего не отображается((
Attachments:

Please Log in or Create an account to join the conversation.

  • epol_pers
  • Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 11 months ago #11380 by epol_pers
Использовал функцию из проекции Галла Петерса

function(coord, zoom) {
var scale = 1 << zoom;

// Wrap tiles horizontally.
var x = ((coord.x % scale) + scale) % scale;

// Don't wrap tiles vertically.
var y = coord.y;
if (y < 0 || y >= scale) return null;

return 'http://сайт/папка/' + zoom +
'_' + x + '_' + y + '.jpg';
}

Please Log in or Create an account to join the conversation.

More
6 years 11 months ago #11388 by Dima
Дайте прямую ссылку на страницу с картой и указанным типом, посмотрю.

Don't forget support my developments: post review in JED , donate , help with translation ;)

Please Log in or Create an account to join the conversation.

Time to create page: 0.206 seconds
Powered by Kunena Forum