Добавить яндекс карту на сайт и метку
Здравтсвуйте, меня интересует такой вот вопрос:
У меня есть сайт и есть база данных. В базе данных есть таблица с различными магазинами (Название магазина,адрес,и т.д). На определенной странице у меня выводиться информация по какому либо магазину. Скажите пожалуйста, как добавить на страницу с информацией о магазине яндекс-карту, на которой будет показано местоположение магазина? ______________ Я тут нашел на одном сайте информацию Как вставить карту на сайт и добавить метку адреса. 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, время: 18:16. |