adlorenz / btsearch

BTSearch v2 website source code
http://beta.btsearch.pl
62 stars 28 forks source link

Mapa na stronie głównej #4

Open Lasoty opened 4 years ago

Lasoty commented 4 years ago

Nie działa mapa na stronie głównej. Trzeba odświeżyć klucz google.

image

olekstomek commented 3 years ago

Komunikat W serwisie beta.btsearch.pl nieregularnie wyświetla się komunikat o błędzie, a mapa jest zaciemniona z informacją "For development purposes only". Dlaczego?

Sytuacja wynika z wprowadzenia przez Google nowego, znacznie niższego niż dotychczas bezpłatnego limitu wykorzystania usługi Google Maps JavaScript API, z której mapa korzysta do wyświetlania danych o lokalizacjach stacji bazowych oraz pozwoleń UKE. Pomimo komunikatu o błędzie oraz zaciemnienia mapy, jej funkcjonalność pozostaje bez zmian.

Biorąc pod uwagę aktualną popularność serwisu, zapewnienie ciągłości funkcjonowania mapy bez zmiany jej providera wymaga poniesienia regularnego kosztu rzędu kilkuset złotych miesięcznie na rzecz Google. Zważywszy, że serwis BTSearch jest projektem typu non-profit, tworzonym w prywatnym czasie przez entuzjastów telekomunikacji i telefonii komórkowej, jest to kwota, której nie jesteśmy w stanie pokryć.

Co dalej? W związku ze wspomnianym wyżej kontekstem "tworzenia BTSearch w prywatnym czasie", wdrożenie rozwiązania dla zaistniałej sytuacji niestety nie będzie szybkim procesem. :( Zastosowanie alternatywnego providera mapy wymaga relatywnie poważnych zmian w kodzie źródłowym serwisu. Ponadto, ze wstępnego researchu wynika, że większość sensownych providerów jest płatnych, więc prawdopodobnie niezbędne będzie dodatkowe finansowanie serwisu (reklamy na mapie, sponsoring itp.). W każdym razie aktualnie rozważamy kilka ścieżek prowadzących do przywrócenia poprawnego funkcjonowania mapy BTSearch.

UWAGA! Zapraszamy do współpracy chętnych web-developerów open-source. Kod źródłowy BTSearch jest dostępny w otwartym repozytorium na GitHub'ie. Więcej szczegółów w README: https://github.com/adlorenz/btsearch

Dawid Lorenz & Krzysztof Niemczyk

http://beta.btsearch.pl/komunikat/

shpyo commented 3 years ago

A może openstreetmap.org zamiast google?

olekstomek commented 3 years ago

A może openstreetmap.org zamiast google?

Zapewne jest to rozwiązanie, ale największym problemem zakładam że jest:

Zastosowanie alternatywnego providera mapy wymaga relatywnie poważnych zmian w kodzie źródłowym serwisu.

jak w komunikacie który załączyłem.

Powiązane: https://github.com/adlorenz/btsearch/issues/1

shpyo commented 3 years ago

Wiadomo, że zmiana providera (mapy) będzie się wiązała z większym refaktorem...

pmatlak1 commented 3 years ago

Niezupełnie, myślę że wcale nie trzeba zmieniać programu i może wystarczyć sama zmiana dostawcy mapy. Zrobiłem szybkie próbi z open street maps (darmowe) i całkiem dobrze wyszło. Nie będę commitował bo nie mam danych testowych i moja apka nie jest w pełni funkcjonalna przez co nie mogę tego kodu dobrze przetestować, ale podążając za tą instrukcją https://wiki.openstreetmap.org/wiki/Google_Maps_Example można wykonać następujące kroki w pliku btsearch.map.js 1) Zmienić mapTypeId na "OSM" - mapTypeId: "OSM", 2) Pod linią 40 dodać coś takiego this.map.mapTypes.set("OSM", new google.maps.ImageMapType({ getTileUrl: function(coord, zoom) { var tilesPerGlobe = 1 << zoom; var x = coord.x % tilesPerGlobe; if (x < 0) { x = tilesPerGlobe+x; } return "https://tile.openstreetmap.org/" + zoom + "/" + x + "/" + coord.y + ".png"; }, tileSize: new google.maps.Size(256, 256), name: "OpenStreetMap", maxZoom: 18 })); I dostaniemy apkę z mapą zaciąganą z OSM. Czy ktoś kto ma działającą wersję APKI mógłby to lepiej przetestować? @adlorenz

zmilonas commented 2 years ago

@pmatlak1 spróbowałem dokładnie tak jak napisałeś i wygląda u mnie bardzo obiecująco.

Zrzut ekranu 2022-01-16 o 02 37 33
rmikke commented 2 years ago

@pmatlak1 spróbowałem dokładnie tak jak napisałeś i wygląda u mnie bardzo obiecująco.

Zrzut ekranu 2022-01-16 o 02 37 33

Wygląda pięknie, tylko jeszcze trzeba zamienić napis "Google" na atrybucję OpenStreetMap :)

Behoston commented 7 months ago

Ping, coś się w tym temacie dzieje?

adlorenz commented 7 months ago

Ping, coś się w tym temacie dzieje?

I tak i nie.

Nie, bo ten projekt efektywnie jest martwy i takim pozostanie, z uwagi na przestarzałe i nie wspierane zależności (stare wersje Django, Python itp.). Generalnie nie ma sensu pudrować trupa, tylko trzeba to napisać od nowa. Nawet jak niedawno wprowadzałem do mapki filtr nowego pasma 5G3500, to robiłem live hack bezpośrednio na serwerze produkcyjnym, bo bałem się robić deploy z gita. :)

Tak, bowiem niedawno zacząłem stopniową eksplorację Dockera (tak, wiem, brzmi "wtf?!", ale jestem boomerem - dosłownie - i nie znałem go wcześniej) oraz koncepcji napisania oraz zdockeryzowania prostej aplikacji btsearch-core, która w założeniu ma odpowiadać wyłącznie za zarządzanie danymi i eksponowanie ich przez API, co w kolejnym założeniu ma otworzyć drogę do pisania 3rd party aplikacji, które te dane by renderowały w dowolny sposób, np. na mapie OSM.

Jak będę miał cokolwiek, co będzie warte pokazania i puszczenia w świat - na pewno tutaj o tym napiszę.

zmilonas commented 7 months ago

Tak jak pisałem też w https://github.com/adlorenz/btsearch/pull/11 to ja chętnie pomogę jakoś, i w zarysie myślę, że rewrite jest dobrym kierunkiem.

Może jednak jako "hotfix" możemy spróbować z tym jednym commitem żeby dać mapkę OSM @adlorenz? Mi to dobrze działało jak się w końcu udało wszystko odpalić na dockerze na chwilę ten jeden raz 2 lata temu :)

https://github.com/adlorenz/btsearch/pull/12/commits/fa53ec9ad6a30fdfb7666f36dba2bcfd922737fb

diff --git a/src/static/js/btsearch.map.js b/src/static/js/btsearch.map.js
index 61e5fe8..dad60be 100644
--- a/src/static/js/btsearch.map.js
+++ b/src/static/js/btsearch.map.js
@@ -15,7 +15,7 @@ var core = {
         center: new google.maps.LatLng(52.069245, 19.480193),
         streetViewControl: false,
         scaleControl: true,
-        mapTypeId: google.maps.MapTypeId.ROADMAP,
+        mapTypeId: 'OSM',
         mapTypeControlOptions: {
             style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,
             position: google.maps.ControlPosition.TOP_RIGHT
@@ -38,6 +38,7 @@ var core = {

     init: function(mapCanvas, initParams) {
         this.map = new google.maps.Map(mapCanvas, this.mapParams);
+   this.map.mapTypes.set("OSM", new google.maps.ImageMapType({ getTileUrl: function(coord, zoom) { var tilesPerGlobe = 1 << zoom; var x = coord.x % tilesPerGlobe; if (x < 0) { x = tilesPerGlobe+x; } return "https://tile.openstreetmap.org/" + zoom + "/" + x + "/" + coord.y + ".png"; }, tileSize: new google.maps.Size(256, 256), name: "OpenStreetMap", maxZoom: 18 }))
         this.geocoder = new google.maps.Geocoder();
         this.markers = [];
         this.initParams = initParams;
diff --git a/src/templates/site/layout.html b/src/templates/site/layout.html
index 590b9bc..90d8b26 100644
--- a/src/templates/site/layout.html
+++ b/src/templates/site/layout.html
@@ -37,7 +37,6 @@
         <ul class="nav navbar-nav">
           <li><a href="{% url 'home' %}">Mapa</a></li>
           <li><a href="{% url 'bts:listing' %}">Baza danych</a></li>
-          <li><a href="/komunikat/" id="news-ticker-trigger"><span class="text-danger">Dlaczego mapa nie wyświetla się poprawnie?</span></a></li>
         </ul>

         <ul class="nav navbar-nav navbar-right">
Behoston commented 7 months ago

Też się chętnie dołożę do projektu ale najwcześniej czas będę miał gdzieś w Q3. Może warto postawić po prostu drugą instancje obok, przenieść dane i jak się uda potwierdzić że działa z osm to przepiąć dnsy.

Przy okazja ssl by się przydał, można to ograć cloudflare, wtedy ruch od przeglądarki do nich leci po ssl, od nich do serwisu może lecieć bez i nic od strony serwera nie trzeba robić, a google i przeglądarki przychylniejszym okiem patrzą na strony z ssl ;)

zmilonas commented 7 months ago

Ok to ja zmieniłem mój istniejący pr #12 tak żeby dodawał tylko tę zmianę która zasugerował @pmatlak1. "U mnie działa" a przynajmniej działało, 2 lata temu jak to zrobiłem kiedy wreszcie udało mi się odpalić lokalnie projekt na krótką chwilę, potem znowu mi wyciągneli zależności spod nóg i już jest trudno odpalić to z Pythonem 2 i na ARM (Apple Silicon) :/