Я не знаю то, что Вы используете для определения состояния блокировки файла, но что-то вроде этого должно сделать это.
while (true) { try { stream = File.Open( fileName, fileMode ); break; } catch( FileIOException ) { // check whether it's a lock problem Thread.Sleep( 100 ); } }
getMinimumResolution - это метод GMapType, а не метод GMap2. поэтому вместо этого:
map.getMinimumResolution = function() { return 6 };
Вы можете сделать это:
var mt = map.getMapTypes();
for (var i=0; i<mt.length; i++) {
mt[i].getMinimumResolution = function() {return 6;}
}
Похоже, вы используете API Карт версии 3, в котором нет возможности установить минимальное и максимальное разрешение. По крайней мере, пока нет.
Вы всегда можете прослушать изменения масштабирования и сбросить масштабирование, если оно не там, где вы хотите, но это было бы довольно некрасиво. :)
Как упоминалось выше, единственный способ, который я пока нашел в V3, чтобы сделать это, - это слушатель событий. Вот код (для максимального масштаба 12 в качестве примера):
google.maps.event.addListener(map, "zoom_changed", function() {
if (map.getZoom() > 12) map.setZoom(12);
});
Да, уродливо, грязно и неправильно, я знаю.
Попробуйте это. У меня отлично работает
// force normal maps type
map.setMapType(G_NORMAL_MAP);
// define minimum and maximum zoom levels
G_NORMAL_MAP.getMinimumResolution = function() { return 0; }
G_NORMAL_MAP.getMaximumResolution = function() { return 19; }
Приведенный ниже код у меня работает нормально. Никакого мерцания, глюков и т. Д. Maps API v3.
var inProcess = false;
function onZoomChanged() {
if (inProcess) return;
if (gmap.getZoom() > 16) {
inProcess = true;
gmap.setZoom(16);
inProcess = false;
return
}
else if (gmap.getZoom() < 10) {
inProcess = true;
gmap.setZoom(10);
inProcess = false;
return;
}
}
google.maps.event.addListener(gmap, 'zoom_changed', onZoomChanged);