OpenStreetMaps Osclass Plugin

OpenStreetMaps Osclass Plugin 1.6.2

Vous n'avez pas l'autorisation de télécharger
  • Auteur du fil de discussion Auteur du fil de discussion theresa
  • Date de début Date de début
Inscrit(e) le
Sep 11, 2021
Messages
10,150
Score de réaction
3,054
Credits
$15,154
merci à membre cher @theresasubmitted un nouveau ressource:OpenStreetMaps Osclass Plugin-permet de mettre des listings sur une carte et de fournir un meilleur visuel pour présenter et rechercher les listings dans votre classe
Afficher la pièce jointe 41940
OpenStreetMaps Osclass Plugin permet de mettre des listings sur carte et de fournir une meilleure visibilité pour présenter et rechercher les listings sur votre annonce classique.

N'avez-vous pas envie d'payer Google pour utiliser Google Maps? Nous non plus, car Google a récemment introduit un plan de facturation pour l'utilisation des services Google Map et a mis fin aux services gratuits. Pour utiliser l'API Google maintenant, vous devez mettre votre carte bancaire ici premierement ! OpenStreetMaps est totalement gratuit !

free google maps pour 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!!!
 
Retour
Haut