Добавить яндекс карту на сайт и метку
Здравтсвуйте, меня интересует такой вот вопрос:
У меня есть сайт и есть база данных. В базе данных есть таблица с различными магазинами (Название магазина,адрес,и т.д). На определенной странице у меня выводиться информация по какому либо магазину. Скажите пожалуйста, как добавить на страницу с информацией о магазине яндекс-карту, на которой будет показано местоположение магазина? ______________ Я тут нашел на одном сайте информацию Как вставить карту на сайт и добавить метку адреса. http://codd.ws/page/jandekskarty-vst...-adresa-obekta Я так понимаю, что нужно создать блок, подключить скрипт загрузки API и вставить этот код в блок
<script type='text/javascript'>
ymaps.ready(init);
function init(){
var geocoder = new ymaps.geocode(
// Строка с адресом, который нужно геокодировать
'Москва, ул. Льва Толстого, 16',
// требуемое количество результатов
{ results: 1 }
);
// После того, как поиск вернул результат, вызывается callback-функция
geocoder.then(
function (res) {
// координаты объекта
var coord = res.geoObjects.get(0).geometry.getCoordinates();
var map = new ymaps.Map('map', {
// Центр карты - координаты первого элемента
center: coord,
// Коэффициент масштабирования
zoom: 7,
// включаем масштабирование карты колесом
behaviors: ['default', 'scrollZoom'],
controls: ['mapTools']
});
// Добавление метки на карту
map.geoObjects.add(res.geoObjects.get(0));
// устанавливаем максимально возможный коэффициент масштабирования - 1
map.zoomRange.get(coord).then(function(range){
map.setCenter(coord, range[1] - 1)
});
// Добавление стандартного набора кнопок
map.controls.add('mapTools')
// Добавление кнопки изменения масштаба
.add('zoomControl')
// Добавление списка типов карты
.add('typeSelector');
}
);
}
</script>
В этом коде есть место где написан адрес. Можно ли вставить на его место адрес , который указан в базе данных, а точнее вставить: $название массива["adress"]? Будет работать? Заранее большое спасибо! |
Цитата:
вы для каждой строчки кода тему на форуме создаете? |
Alex351960,
А если скажем что не нет? Поверите и не будете пробовать? |
Цитата:
Вот как я добавлял одну метку:
<script type='text/javascript'>
ymaps.ready(init);
function init(){
var geocoder = new ymaps.geocode(
// Строка с адресом, который нужно геокодировать
'<?php echo $myrow["adress"]; ?>',
// требуемое количество результатов
{ results: 1 }
);
// После того, как поиск вернул результат, вызывается callback-функция
geocoder.then(
function (res) {
// координаты объекта
var coord = res.geoObjects.get(0).geometry.getCoordinates();
var map = new ymaps.Map('map', {
// Центр карты - координаты первого элемента
center: coord,
// Коэффициент масштабирования
zoom: 7,
// включаем масштабирование карты колесом
behaviors: ['default', 'scrollZoom'],
controls: ['mapTools']
});
// Добавление метки на карту
map.geoObjects.add(res.geoObjects.get(0));
// устанавливаем максимально возможный коэффициент масштабирования - 1
map.zoomRange.get(coord).then(function(range){
map.setCenter(coord, range[1] - 1)
});
// Добавление стандартного набора кнопок
map.controls.add('mapTools')
// Добавление кнопки изменения масштаба
.add('zoomControl')
// Добавление списка типов карты
.add('typeSelector');
}
);
}
</script>
А две метки почему-то не добавляются. вот код:
<script type='text/javascript'>
ymaps.ready(init);
function init(){
var geocoder = new ymaps.geocode(
// Строка с адресом, который нужно геокодировать
'<?php echo $myrow["adress"]; ?>',
'Нижний Новгород',
// требуемое количество результатов
{ results: 1 }
);
// После того, как поиск вернул результат, вызывается callback-функция
geocoder.then(
function (res) {
// координаты объекта
var coord = res.geoObjects.get(0).geometry.getCoordinates();
var map = new ymaps.Map('map', {
// Центр карты - координаты первого элемента
center: coord,
// Коэффициент масштабирования
zoom: 7,
// включаем масштабирование карты колесом
behaviors: ['default', 'scrollZoom'],
controls: ['mapTools']
});
// Добавление метки на карту
map.geoObjects.add(res.geoObjects.get(0));
// устанавливаем максимально возможный коэффициент масштабирования - 1
map.zoomRange.get(coord).then(function(range){
map.setCenter(coord, range[1] - 1)
});
// Добавление стандартного набора кнопок
map.controls.add('mapTools')
// Добавление кнопки изменения масштаба
.add('zoomControl')
// Добавление списка типов карты
.add('typeSelector');
}
);
}
</script>
В чем может быть проблема? Можно ли вообще добавлять несколько меток? |
Alex351960,
Дык геокодер не находит наверное 2 адреса или хз. я что то подзабыл эти карты |
Цитата:
http://jsfiddle.net/pw4Tc/ комментарии к коду: 1) массив с адресами лучше не зашивать в html, а вынести в отдельный скрипт, формируемый динамически, т.е. подключить как <script src="adresses.php" type="text/javascript"></script>, в нем и сформировать массив. 2) в примере сначала строится карта с наперед заданным отображением, потом наносятся метки. это самый простой вариант. если тебе надо показать карту только в тех рамках, в которых имеются метки (с максимально возможным зумом, при котором все метки видны), то сначала загружаешь все адреса, потом смотришь их координаты и определяешь прямоугольник, по нему и делаешь зум и позиционирование карты. |
если нет необходимости динамически увеличивать/уменьшать количество адресов (т.е. в ближайшем будущем эти адреса останутся неизменными) то много проще буде "вручную" определить координаты этих адресов на карте и запомнить уже массив этих координат.
|
в общем да.
заодно так же "вручную" определить зум и координаты, чтобы сразу открыть карту правильно. |
Цитата:
|
Цитата:
http://jsfiddle.net/zp4Eb/ |
| Часовой пояс GMT +3, время: 16:40. |