OpenStreetMaps Osclass Plugin

OpenStreetMaps Osclass Plugin 1.6.2

Keine Berechtigung zum Herunterladen
Beigetreten
Sep 11, 2021
Nachrichten
10,150
Reaktionswert
3,054
Credits
$15,154
danke dem freundlichen Mitglied @theresasubmitted einen neuen Ressourcen:OpenStreetMaps Osclass Plugin-erlaubt es, Anzeigen auf die Karte zu stellen und eine bessere visuelle Darstellung zur Präsentation und Suche von Anzeigen auf Ihrer Kategorie zu bieten
Anhang 41940 einsehen
OpenStreetMaps Osclass Plugin erlaubt es, Listings auf einem Map zu stellen und bietet eine bessere visuelle Darstellung zur Präsentation und Suche der Listings auf Ihren Klassifizierungsseiten.

Willst du nicht Google bezahlen, um Google Maps zu verwenden? Wir auch nicht, da Google in letzter Zeit eine Gebührenplanung für die Nutzung von Google Map-Diensten eingeführt hat und freie Dienste beendet hat. Um den Google API jetzt zu nutzen, musst du deinen Kreditkarteninformationen hier vorab Platz machen! OpenStreetMaps ist komplett kostenlos!

frei google maps für osclass​

...
Read more about this resource...
 
Карту OpenStreetMaps также можно встроить в другие плагины например в яндекс карту
заменить в плагине яндекс карт map.php
Code:
<?php
// Собираем адрес из полей объявления (для отображения в метке)
$addr_parts = array();
if (!empty($item['s_zip'])) $addr_parts[] = $item['s_zip'];
if (!empty($item['s_country'])) $addr_parts[] = $item['s_country'];
if (!empty($item['s_region'])) $addr_parts[] = $item['s_region'];
if (!empty($item['s_city'])) $addr_parts[] = $item['s_city'];
if (!empty($item['s_address'])) $addr_parts[] = $item['s_address']; // может содержать координаты
$display_address = implode(", ", $addr_parts);
?>
<!-- Подключаем Leaflet -->
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
<!-- Контейнер для карты -->
<div id="map" style="width: 100%; height: 240px;"></div>
<script>
// Функция инициализации карты
function initMap(lat, lon) {
    var map = L.map('map').setView([lat, lon], 16);
    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
        attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
    }).addTo(map);
    L.marker([lat, lon]).addTo(map)
        .bindPopup('<?php echo addslashes($display_address); ?>')
        .openPopup();
}
// Получаем значение поля s_address (может быть либо текстовым адресом, либо координатами)
var rawAddress = '<?php echo addslashes($item['s_address']); ?>';
// Проверяем, является ли s_address координатами (формат: "широта, долгота")
var coordsMatch = rawAddress.match(/^([-+]?\d{1,2}\.\d+),\s*([-+]?\d{1,3}\.\d+)$/);
if (coordsMatch) {
    // Это координаты – используем их напрямую
    var lat = parseFloat(coordsMatch[1]);
    var lon = parseFloat(coordsMatch[2]);
    initMap(lat, lon);
} else {
    // Если нет координат, пробуем геокодировать текстовый адрес
    var country = '<?php echo addslashes($item['s_country']); ?>';
    var region  = '<?php echo addslashes($item['s_region']); ?>';
    var city    = '<?php echo addslashes($item['s_city']); ?>';
    var street  = rawAddress; // здесь может быть старый текстовый адрес
    var zip     = '<?php echo addslashes($item['s_zip']); ?>';
    // Выполняем геокодирование, если есть хотя бы улица, город или регион
    if (street.trim() !== '' || city.trim() !== '' || region.trim() !== '') {
        // Структурированный запрос
        var params = new URLSearchParams({
            format: 'json',
            limit: 1,
            countrycodes: 'ru' // ограничиваем Россией (можно убрать или параметризовать)
        });
        if (street)  params.append('street', street);
        if (city)    params.append('city', city);
        if (region)  params.append('state', region);
        if (country) params.append('country', country);
        if (zip)     params.append('postalcode', zip);
        var url = 'https://nominatim.openstreetmap.org/search?' + params.toString();
        fetch(url, {
            headers: { 'User-Agent': 'OsclassPlugin/1.0' }
        })
        .then(response => response.json())
        .then(data => {
            if (data && data.length > 0) {
                var lat = parseFloat(data[0].lat);
                var lon = parseFloat(data[0].lon);
                initMap(lat, lon);
            } else {
                // Если структурированный не сработал, пробуем свободный запрос
                console.log('Структурированный запрос не дал результатов, пробуем свободный');
                var freeUrl = 'https://nominatim.openstreetmap.org/search?format=json&q='
                            + encodeURIComponent('<?php echo addslashes($display_address); ?>')
                            + '&countrycodes=ru&limit=1';
                return fetch(freeUrl, {
                    headers: { 'User-Agent': 'OsclassPlugin/1.0' }
                })
                .then(response => response.json())
                .then(data => {
                    if (data && data.length > 0) {
                        var lat = parseFloat(data[0].lat);
                        var lon = parseFloat(data[0].lon);
                        initMap(lat, lon);
                    } else {
                        console.log('Адрес не найден');
                        // Можно скрыть карту или показать сообщение
                        document.getElementById('map').style.display = 'none';
                    }
                });
            }
        })
        .catch(error => console.error('Ошибка геокодирования:', error));
    } else {
        console.log('Нет данных для геокодирования');
        // Скрываем карту, если нет адреса
        document.getElementById('map').style.display = 'none';
    }
}
</script>
 
Карту OpenStreetMaps также можно встроить в другие плагины например в яндекс карту
заменить в плагине яндекс карт map.php
Code:
<?php
// Собираем адрес из полей объявления (для отображения в метке)
$addr_parts = array();
if (!empty($item['s_zip'])) $addr_parts[] = $item['s_zip'];
if (!empty($item['s_country'])) $addr_parts[] = $item['s_country'];
if (!empty($item['s_region'])) $addr_parts[] = $item['s_region'];
if (!empty($item['s_city'])) $addr_parts[] = $item['s_city'];
if (!empty($item['s_address'])) $addr_parts[] = $item['s_address']; // может содержать координаты
$display_address = implode(", ", $addr_parts);
?>
<!-- Подключаем Leaflet -->
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
<!-- Контейнер для карты -->
<div id="map" style="width: 100%; height: 240px;"></div>
<script>
// Функция инициализации карты
function initMap(lat, lon) {
    var map = L.map('map').setView([lat, lon], 16);
    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
        attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
    }).addTo(map);
    L.marker([lat, lon]).addTo(map)
        .bindPopup('<?php echo addslashes($display_address); ?>')
        .openPopup();
}
// Получаем значение поля s_address (может быть либо текстовым адресом, либо координатами)
var rawAddress = '<?php echo addslashes($item['s_address']); ?>';
// Проверяем, является ли s_address координатами (формат: "широта, долгота")
var coordsMatch = rawAddress.match(/^([-+]?\d{1,2}\.\d+),\s*([-+]?\d{1,3}\.\d+)$/);
if (coordsMatch) {
    // Это координаты – используем их напрямую
    var lat = parseFloat(coordsMatch[1]);
    var lon = parseFloat(coordsMatch[2]);
    initMap(lat, lon);
} else {
    // Если нет координат, пробуем геокодировать текстовый адрес
    var country = '<?php echo addslashes($item['s_country']); ?>';
    var region  = '<?php echo addslashes($item['s_region']); ?>';
    var city    = '<?php echo addslashes($item['s_city']); ?>';
    var street  = rawAddress; // здесь может быть старый текстовый адрес
    var zip     = '<?php echo addslashes($item['s_zip']); ?>';
    // Выполняем геокодирование, если есть хотя бы улица, город или регион
    if (street.trim() !== '' || city.trim() !== '' || region.trim() !== '') {
        // Структурированный запрос
        var params = new URLSearchParams({
            format: 'json',
            limit: 1,
            countrycodes: 'ru' // ограничиваем Россией (можно убрать или параметризовать)
        });
        if (street)  params.append('street', street);
        if (city)    params.append('city', city);
        if (region)  params.append('state', region);
        if (country) params.append('country', country);
        if (zip)     params.append('postalcode', zip);
        var url = 'https://nominatim.openstreetmap.org/search?' + params.toString();
        fetch(url, {
            headers: { 'User-Agent': 'OsclassPlugin/1.0' }
        })
        .then(response => response.json())
        .then(data => {
            if (data && data.length > 0) {
                var lat = parseFloat(data[0].lat);
                var lon = parseFloat(data[0].lon);
                initMap(lat, lon);
            } else {
                // Если структурированный не сработал, пробуем свободный запрос
                console.log('Структурированный запрос не дал результатов, пробуем свободный');
                var freeUrl = 'https://nominatim.openstreetmap.org/search?format=json&q='
                            + encodeURIComponent('<?php echo addslashes($display_address); ?>')
                            + '&countrycodes=ru&limit=1';
                return fetch(freeUrl, {
                    headers: { 'User-Agent': 'OsclassPlugin/1.0' }
                })
                .then(response => response.json())
                .then(data => {
                    if (data && data.length > 0) {
                        var lat = parseFloat(data[0].lat);
                        var lon = parseFloat(data[0].lon);
                        initMap(lat, lon);
                    } else {
                        console.log('Адрес не найден');
                        // Можно скрыть карту или показать сообщение
                        document.getElementById('map').style.display = 'none';
                    }
                });
            }
        })
        .catch(error => console.error('Ошибка геокодирования:', error));
    } else {
        console.log('Нет данных для геокодирования');
        // Скрываем карту, если нет адреса
        document.getElementById('map').style.display = 'none';
    }
}
</script>
Thank you!!!
 
Zurück
Oben