Форум программистов, компьютерный форум, киберфорум
HTML, CSS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/193: Рейтинг темы: голосов - 193, средняя оценка - 4.89
 Аватар для annasha
1 / 1 / 0
Регистрация: 09.06.2017
Сообщений: 72

Адаптивная карта Google через iframe

09.06.2017, 11:03. Показов 39091. Ответов 10

Студворк — интернет-сервис помощи студентам
Всех приветствую!

Такое дело - сделала в конструкторе карт от гугла свою карту. Несколько слоёв, индивидуальные маркеры - всё красиво...

Карта вставляется через iframe и не является резиновой (не подстраивается под размер экрана).

В сети нашла только один способ вставить карту и сделать её резиновой:

CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.mapWrapper {
    position: relative;
    /* 
    Do math with the height of your iframe divided by the width, then converted to percent
    In this example the height is 400 and the width is 600
    400 / 600 = .66666667 
    which is 66.6666667% */
    padding-bottom: 66.6666667%; 
    height: 0;
}
.mapWrapper iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 400px;
}
Вставляю этот код на сайт и вылезает два косяка:
1. Карта вылезает за пределы div
2. уезжает центр карты и отображается на экране не место, куда добавлены маркеры. Совсем другое место показывает.

Может кто сталкивался и знает как можно это побороть?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.06.2017, 11:03
Ответы с готовыми решениями:

Адаптивная карта с подсветкой регионов и всплывающими названиями
При помощи чего лучше реализовать данную карту, при наведении на маркерах подсвечивается область региона и всплывает название региона,...

Вводим ссылку для Google документа, а получаем ее уже интегрированную через окошко iframe
Добрый день! Возникла такая задача: мы вводим общую ссылку на любой документ из Гугл диска(ее мы можем получить нажав правой клавишей мышки...

Автообновление iframe в Google Chrome
для автоообновления сипользую такой код: <script type=text/javascript> function refresh() { document.all.iframe1.src =...

10
0 / 0 / 0
Регистрация: 19.07.2016
Сообщений: 50
09.06.2017, 18:20
покажи html код
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
09.06.2017, 22:44
annasha, код фрейма пожалуйста.....

Добавлено через 33 минуты
Сэкономлю вам время.
Цитата Сообщение от annasha Посмотреть сообщение
сделать её резиновой:
Код, который генерирует конструктор, выглядит примерно так
HTML5
1
<iframe src="https://www.google.com/maps/d/embed?mid=1XCQgM2Ze65XdUGyu4uzcE-NlAKI" width="640" height="480"></iframe>
вот этот участок width="640" отвечает за ширину фрейма. Она по умолчанию в px. Сделайте width="100%" или сколько вам требуется. Это правило имеет приоритет выше, чем то что в подключаемом файле стилей. Или удалите из кода фрейма строки width="640" height="480" и уже в стилях правьте как вам хочется.

Добавлено через 7 минут
Цитата Сообщение от annasha Посмотреть сообщение
1. Карта вылезает за пределы div
Цитата Сообщение от annasha Посмотреть сообщение
уезжает центр карты и отображается на экране не место, куда добавлены маркеры. Совсем другое место показывает.
Ну правильно.. с чего вдруг обертка стала меньше чем сам фрейм-
это я про
Цитата Сообщение от annasha Посмотреть сообщение
height: 0;
Цитата Сообщение от annasha Посмотреть сообщение
padding-bottom: 66.6666667%;
- вот это вам к чему?

Добавлено через 8 минут
Вот вам простой способ вставить карту и сделать ее резиновой
HTML5
1
2
3
4
5
6
7
8
9
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
</head>
<body>
<iframe src="https://www.google.com/maps/d/embed?mid=1XCQgM2Ze65XdUGyu4uzcE-NlAKI" width="50%" height="480"></iframe>
</body>
</html>
0
 Аватар для annasha
1 / 1 / 0
Регистрация: 09.06.2017
Сообщений: 72
10.06.2017, 10:41  [ТС]
Не всё так просто. Я знаю html и знаю что width="640" можно изменить на width="100%". И это сработает. Я изучила и вникла в проблему, я очень много вариантов перепробовала сама и у меня ничего не получилось.

Всё-таки нужно показать код.
Код карты, допустим, будет такой:
HTML5
1
<iframe src="https://www.google.com/maps/d/embed?mid=1cRrZ8FNYE3g3PdJ7hzHBx6g83sw" width="100%" height="480"></iframe>
код сайта прикреплён к сообщению. Если что, то я его взяла вот от сюда: https://codyhouse.co/gem/css-faq-template/

Там первым пунктом как раз эта карта, которая вместо нужной заданной области показывает совсем другую часть.
Вложения
Тип файла: zip www.zip (97.9 Кб, 7 просмотров)
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
10.06.2017, 12:16
annasha,
Цитата Сообщение от annasha Посмотреть сообщение
вместо нужной заданной области показывает совсем другую часть
при настройке карты нужно указывать область по умолчанию. Тогда будет именно то что нужно. Смотрим скрин. По поводу резины, расширения при разработке выключите, если включены. Тестить нужно на чистом клиенте. Не забываем CTRL+F5. (уверен вы и так знали, просто напомнил. Мало ли..)

Еще мысль - Кусок простого кода, что я вам дал выше, работает. Оттолкнитесь от него. И начинайте по одному блоку достраивать страницу. Сразу поймете где косяк.
Миниатюры
Адаптивная карта Google через iframe  
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
10.06.2017, 12:22
annasha, посмотрел архив - у меня резина пашет(Лиса, Опера, Хром, Сафари). Насчет области просмотра я вам уже написал.
0
 Аватар для annasha
1 / 1 / 0
Регистрация: 09.06.2017
Сообщений: 72
10.06.2017, 15:18  [ТС]
Qwerty_Wasd, конечно же я знаю про область просмотра и я её задавала. Но почему-то оно не работает. Уверена, Вы тоже для своей карты задавали область просмотра. Попробуйте вставить её заместо моей и посмотрите - карта съезжает...

Добавлено через 34 минуты
я так понимаю, дело не в карте. Карта правильно сделана, область настроена. И если сделать html страничку только с картой, то она открывается идеально.

HTML5
1
2
3
4
5
6
7
8
9
10
11
<!doctype html>
<html lang="en" class="no-js">
<head>
    <meta charset="UTF-8">
    <title>карта</title>
</head>
<body>
<iframe src="https://www.google.com/maps/d/embed?mid=1cRrZ8FNYE3g3PdJ7hzHBx6g83sw" width="100%" height="480"></iframe>
<iframe src="https://www.google.com/maps/d/embed?mid=1cRrZ8FNYE3g3PdJ7hzHBx6g83sw" width="50%" height="480"></iframe>
<iframe src="https://www.google.com/maps/d/embed?mid=1cRrZ8FNYE3g3PdJ7hzHBx6g83sw" width="30%" height="480"></iframe>
</body>
тут три карты - все открываются в заданной области просмотра. Но стоит внедрить их в тот шаблон, что у меня - карта уезжает...
Дело не в карте, дело в шаблоне.
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
10.06.2017, 15:50
annasha, дело не в шаблоне. Думаю дело в API конструктора.
Вот простой пример, который имеет ту же траблу.

Первый работает с обычной картой(делал кому-то на форуме, не помню)
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>
<a id="link1" href="#">Click me</a>
<br>
<iframe id="content1" style="display: none;" src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d196.7466686284212!2d2.07377654053459!3d48.43547626601815!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47e5cb36b6178b8d%3A0xb5d14b9006f1a617!2z0JvQtSDQltC-0L8sIDkxNzgwLCDQpNGA0LDQvdGG0LjRjw!5e0!3m2!1sru!2sru!4v1495842943132" width="600" height="450" frameborder="0" style="border:0" allowfullscreen></iframe>
<script>
$(document).ready(function () {$('a#link1').click(function (e) {
            $(this).toggleClass('active');
            $('#content1').toggle();
            e.stopPropagation();});
        $('body').click(function () {
            var link = $('a#link1');
            if (link.hasClass('active')) {
                link.click();}});});
</script>
</body>
</html>
А вот второй - с ссылкой на конструктор
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>
<a id="link1" href="#">Click me</a>
<br>
<iframe id="content1" style="display: none;" src="http://www.google.com/maps/d/embed?mid=1XCQgM2Ze65XdUGyu4uzcE-NlAKI" width="600" height="450" frameborder="0" style="border:0" allowfullscreen></iframe>
<script>
$(document).ready(function () {$('a#link1').click(function (e) {
            $(this).toggleClass('active');
            $('#content1').toggle();
            e.stopPropagation();});
        $('body').click(function () {
            var link = $('a#link1');
            if (link.hasClass('active')) {
                link.click();}});});
</script>
</body>
</html>
Добавлено через 1 минуту
Во втором случае - та же проблема что и у вас. Самому интересно стало. Найду решение, сразу вам отпишу.

annasha, попробовал яндекс конструктор. Очень хорошо работает. Не рекламирую. Просто как вариант.
Миниатюры
Адаптивная карта Google через iframe  
0
 Аватар для annasha
1 / 1 / 0
Регистрация: 09.06.2017
Сообщений: 72
10.06.2017, 19:36  [ТС]
Qwerty_Wasd, спасибо! Яндекс я тоже пробовала, но там функционал слабее. Нет слоёв, мало иконок меток.
Ещё я думала возможно ли причина в js? Тут я совсем не разбираюсь, но к сайту подключен скрипт modernizr.js и jquery-2.1.1.js. В этих файлах встречается упоминание iframe, но что оно там как настраивает я не понимаю...

Добавлено через 18 минут
Да! дело где-то там... Удалила файл modernizr.js и карта отображается как надо! Но сайт, правда, при этом поплыл...
Надо создавать отдельную тему в разделе JS или сможем тут найти решение?
0
Эксперт JSЭксперт HTML/CSS
 Аватар для mrtoxas
3827 / 2677 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4
10.06.2017, 20:12
annasha, если вопрос касается скриптов - создаем тему в разделе JS. Тут обсуждаем верстку. И на будущее, помним, что на один вопрос создаем новую тему.
0
 Аватар для annasha
1 / 1 / 0
Регистрация: 09.06.2017
Сообщений: 72
10.06.2017, 20:24  [ТС]
mrtoxas, понятно, спасибо!

Добавлено через 8 минут
Создала новую тему: Скрипт влияет на отображение карты Google
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.06.2017, 20:24
Помогаю со студенческими работами здесь

Работа Google AdSense в iframe.
Друзья, подскажите, со вчерашнего дня перестала показываться гуглевая реклама если она вставлена iframe. Это у меня локально не работает...

HTML/Iframe.B в режиме Инкогнито Google Chrome
лог приложен. Антивирус ESET NOD 32 не отключал, т.к. предупреждение на красном фоне, что есть угроза, и компьютер будет поврежден. Могу...

Почему в XAMPP не работает iframe от google maps?
&lt;iframe width=&quot;425&quot; height=&quot;350&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; marginheight=&quot;0&quot;...

Карта Google
Начальство поставило задачу, чтоб на карте гугл отображались наши объекты выборочно. Например отображается карта, на ней 3 десятка...

Карта google
Здравствуйте, уважаемые форумчане! На одном из сайтов пытаюсь разместить схему проезда как на www.gazmaster52.wix.com/gazmaster ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru