Благодаря примеру Саши Белого (спасибо!) получил конструкцию, принимающую параметры карты из урл. Добавил туда также установку маркера, если его координаты заданы. Выглядит это так:
if (hash) {
var hash = hash.substr(1, hash.length - 1).split('&'),
params = {};
for (var i = 0, l = hash.length, param; i < l; i++) {
param = hash[i].split('=');
if (param[0] && param[1]) {
params[param[0]] = param[1];
}
}
if (params.ll && params.z && params.mt) {
var mapType = YMaps.MapType.MAP;
switch (params.mt) {
case 'sat':
mapType = YMaps.MapType.SATELLITE;
break;
case 'sat,skl':
mapType = YMaps.MapType.HYBRID;
break;
}
map.setCenter(YMaps.GeoPoint.fromString(params.ll) , params.z, mapType);
}
// Маркер
if (params.p) {
var pmark = new YMaps.Placemark(YMaps.GeoPoint.fromString(params.p ), {draggable: true, hasBalloon: 0});
pmark.setIconContent('Здесь');
map.addOverlay(pmark);
}
Это работает, проверил.
Вопрос в том, как динамически передавать в адресную строку координаты маркера (p=) ? И вообще, возможно ли это?
Если остальные параметры передаются через:
YMaps.Events.observe(map, [map.Events.Update, map.Events.MoveEnd, map.Events.ChangeType], function (obj, e) {
document.location.hash = '#ll=' + map.getCenter().toString() +
'&z=' + map.getZoom() +
'&mt=' + map.getType().getLayers().toString();
});
Перемещаемый маркер, координаты которого хочется получить в адресной строке, вызываю функцией (по нажатию кнопки) :
<script language="JavaScript">
function mark() {
var placemark = new YMaps.Placemark(map.getCenter(), {draggable: true, hasBalloon: 0});
placemark.setIconContent('Здесь');
map.addOverlay(placemark);
};
</script>