From 6875a96723b0881535c0836584dc971a097954c1 Mon Sep 17 00:00:00 2001 From: Llloooggg Date: Mon, 25 Apr 2022 00:07:22 +0300 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=B8=D0=BA=D0=BE=D0=BD=D0=BE=D0=BA=D0=B8=20"=D1=82?= =?UTF-8?q?=D0=BE=D1=87=D0=B5=D0=BA"=20=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D1=8C=20=D0=B0=D0=B4=D1=80=D0=B5=D1=81=D0=B0=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=BD=D0=B0=D0=B6=D0=B0=D1=82=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wheretogo/maps/admin.py | 10 +++++- wheretogo/static/maps/img/place.png | Bin 0 -> 28406 bytes wheretogo/static/maps/js/map.js | 54 +++++++++++++++++----------- wheretogo/templates/maps/map.html | 1 + 4 files changed, 43 insertions(+), 22 deletions(-) create mode 100644 wheretogo/static/maps/img/place.png diff --git a/wheretogo/maps/admin.py b/wheretogo/maps/admin.py index 6970051..ac49c6f 100644 --- a/wheretogo/maps/admin.py +++ b/wheretogo/maps/admin.py @@ -1,5 +1,13 @@ +from django.contrib.gis.db import models +from django.forms.widgets import Textarea from django.contrib import admin + from maps.models import Facility -admin.site.register(Facility) + +class FacilityAdmin(admin.ModelAdmin): + formfield_overrides = {models.PointField: {"widget": Textarea}} + + +admin.site.register(Facility, FacilityAdmin) diff --git a/wheretogo/static/maps/img/place.png b/wheretogo/static/maps/img/place.png new file mode 100644 index 0000000000000000000000000000000000000000..4812093c1af816b4bc4295758ee18d8ddf31abff GIT binary patch literal 28406 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 literal 0 HcmV?d00001 diff --git a/wheretogo/static/maps/js/map.js b/wheretogo/static/maps/js/map.js index 0d864a7..5203df6 100644 --- a/wheretogo/static/maps/js/map.js +++ b/wheretogo/static/maps/js/map.js @@ -7,6 +7,7 @@ map. .on("locationfound", (e) => map.setView(e.latlng, 12)) .on("locationerror", () => map.setView([0, 0], 5)); + async function loadFacilities() { const facilities_url = `/api/facilities/?in_bbox=${map.getBounds().toBBoxString()}` const response = await fetch(facilities_url) @@ -16,30 +17,51 @@ async function loadFacilities() { async function renderFacilities() { const facilities = await loadFacilities(); - L.geoJSON(facilities) - .bindPopup((layer) => layer.feature.properties.name) - .addTo(map); + L.geoJSON(facilities, { + onEachFeature: function (feature) { + + var facilityMarkerStyle = L.Icon.extend({ + options: { + iconSize: [20, 20], + } + }); + + var facilityMarker = new facilityMarkerStyle({ iconUrl: document.getElementById("facilityMarkerURL").innerHTML }); + + var lat = feature.geometry.coordinates[1]; + var lon = feature.geometry.coordinates[0]; + + L.marker([lat, lon], { icon: facilityMarker }).bindPopup(feature.properties.name).addTo(map); + } + }); } map.on("moveend", renderFacilities); +var clickMarker; + map.on("click", function (e) { const { lat, lng } = e.latlng; const get_addr_api = `https://nominatim.openstreetmap.org/reverse.php?lat=${lat}&lon=${lng}&zoom=18&format=jsonv2`; - fetchAddressData(get_addr_api).then((data) => { - const { country, state, city, house_number, road } = data.address; - console.log(country + ', ' + state + ', ' + city + ', ' + road + ', ' + house_number); + var { city, house_number, road } = data.address; - const get_long_api = `https://nominatim.openstreetmap.org/search.php?q=${road + ' ' + house_number + ' ' + city}&format=jsonv2&limit=1&addressdetails=1`; + if (clickMarker != undefined) { + map.removeLayer(clickMarker); + }; - fetchLatLonData(get_long_api).then((data) => { - const { country, state, city, house_number, road } = data[0].address; - console.log(country + ', ' + state + ', ' + city + ', ' + road + ', ' + house_number); - }); + clickMarker = L.marker([data.lat, data.lon],).addTo(map); + + var popupText = '

' + city + ', ' + road + if (house_number) { + popupText += ', ' + house_number + } + popupText += '

' + + clickMarker.bindPopup(popupText).openPopup(); }); @@ -52,14 +74,4 @@ map.on("click", function (e) { console.error(err); } }; - - async function fetchLatLonData(url) { - try { - const response = await fetch(url); - const data = await response.json(); - return data; - } catch (err) { - console.error(err); - } - } }) diff --git a/wheretogo/templates/maps/map.html b/wheretogo/templates/maps/map.html index 486d359..492e6f1 100644 --- a/wheretogo/templates/maps/map.html +++ b/wheretogo/templates/maps/map.html @@ -16,6 +16,7 @@ crossorigin=""> {% block content %}
+{% static "maps/img/place.png" %} {% endblock %} {% block scripts %}