Daha çox

Google.maps.ROADMAP, əsas təbəqəni dəyişdirməyincə və yenidən tətbiq etməyincə OL -da görünmür


OL 2.13 ilə veb tətbiqim və əsas təbəqə olaraq google street var. Bir neçə gün əvvəl hər şey yaxşı işləyirdi, birdən -birə (heç bir dəyişiklik etmədən) xəritə ağ rənglə yüklənir (konsolda heç bir səhv yoxdur) və xəritəni fərqli bir əsas qatla (hibrid və ya peyk) yükləsəm və qatdan çox google küçəsini seçsəm. çəkilir.

Bu davranışa səbəb ola biləcək hər hansı bir fikir varmı?

map = new OpenLayers.Map ('myMap', {ədəd: 'm', zoomMethod: null, proyeksiya: epsg900913, displayProjection: epsg4326}); var ggl = yeni OpenLayers.Layer.Google ('1', {type: google.maps.MapTypeId.ROADMAP}); var sat = yeni OpenLayers.Layer.Google ('2', {type: google.maps.MapTypeId.SATELLITE}); var hibrid = yeni OpenLayers.Layer.Google ('3', {type: google.maps.MapTypeId.HYBRID}); map.addLayers ([ggl, hibrid, sat]);

Mən


Google skriptinin versiya nömrəsini 3.5 olaraq dəyişdirin:

http://maps.google.com/maps/api/js?v=3.5


AlexGreg'in 2015-11-18-də dediyi kimi, Dude2TheN həlli dünən Javascript Google Maps API v3.20 təqaüdə çıxdıqdan sonra işləmir.

Ancaq müvəffəqiyyətlə Jim Bacon (və szekerest) həllini tətbiq etdim: OpenLayers.js 2.13.1 -in yenilənmiş (və qeyri -rəsmi) bir versiyasından istifadə etməlisiniz.

Yaranan və dəyişdirilmiş faylımın bir nüsxəsini paylaşdım (daxili məqsəd üçün 2.13.2 olaraq etiketləndi, ancaq bunun rəsmi bir versiyası olmadığını unutmayın): amma orijinal OpenLayers.js 2.13.1 əslində xüsusi bir fayl, çıxarış idi rəsmi OpenLayers.js 2.13.1 (performans məqsədi ilə, adını unutduğum bir alətlə istifadə etmədiyim bütün hissələrdən qurtarıram), bu modifikasiyanı görmək və saxlamaq üçün bu faylı bir model hesab edin nəzərə almadığım bir OpenLayer komponentindən istifadə etsəniz, heç işləməyəcək ...

Yeniləyin : növbəti cəhddən sonra rəsmi OpenLayers.js 2.13.1 -ə əsaslanan qeyri -rəsmi OpenLayers.js 2.13.2 -nin bütün OpenLayers komponentini özündə əks etdirən tam versiyasıdır.

Yeniləmə 2 : AlexGreg üçün bu, rəsmi OpenLayers.js 2.13.1 (1081 -ci sətir) arasındakı dəyişiklikimdir:

{if (e.parentNode! == c.div) if (b.rendered) c.div.appendChild (e), b.googleControl.appendChild (c.viewPortDiv), google.maps.event.trigger (this.mapObject) ; ; h.moveTo (h.map.getCenter ())})} bu.mapObject.setMapTypeId (d)} başqa

və qeyri -rəsmi OpenLayers.js 2.13.2:

{if (e.parentNode! == c.div) {if (! b.rendered) {var h = this; google.maps.event.addListenerOnce (this.mapObject, "tileloaded", function () {b.rendered) =! 0; h.setGMapVisibility (h.getVisibility ()); h.moveTo (h.map.getCenter ()); b.googleControl.appendChild (c.viewPortDiv)})} başqa {b.googleControl.appendChild (c .viewPortDiv)} c.div.appendChild (e), google.maps.event.trigger (this.mapObject, "resize");} this.mapObject.setMapTypeId (d)} başqa

Ancaq əslində, Jim Bacon tərəfindən təklif olunan dəqiq bir dəyişiklikdir, bunları tam bir əməliyyat sənədinə birləşdirdim


Əlavə araşdırmalar apardım və Thomas B -nin mənə kömək edəcək bir təklifi olduğunu gördüm (link). Google Maps API skript etiketindəki versiyanı 3 -dən 3.5 -ə dəyişməyi təklif etdi. Buna görə istifadə etmək əvəzinə:

http://maps.google.com/maps/api/js?v = 3& sensor = yanlış

İstifadə edin:

http://maps.google.com/maps/api/js?v = 3.5& sensor = yanlış

Dəyişikliyi etdiyim zaman ROADMAP qatı düzgün yükləndi.


Yeniləyin: orijinal düzəliş artıq işləmir, buna görə daha çox axtarış etdim və Jim Baconun 7 oktyabr şərhini bu linkdən istifadə edərək tapdım:

https://github.com/openlayers/openlayers/issues/1450#issuecomment-146207698

Vitalidze şərhindəki linkdəki OpenLayers.js -ə Jim yamasını tətbiq etdi:

https://github.com/vitalidze/traccar-web/commit/b7485a2a2acc12d5df9744f82b3c72468c9cb6ae

və onun dəyişdirilmiş faylını GitHub -da xam görünüşdə görə bilərsiniz:

https://raw.githubusercontent.com/vitalidze/traccar-web/b7485a2a2acc12d5df9744f82b3c72468c9cb6ae/src/main/webapp/js/openlayers/OpenLayers.js

GitHub -da usta olmadığım üçün son bağlantıdakı xam görünüşü panoya kopyaladım və OpenLayers.js olaraq saxladım və bu versiyanı Google Xəritə ilə istifadə edərkən artıq ROADMAP -ın əvvəlcə yüklənməməsi ilə bağlı problemim yoxdur.


işləməsi üçün zoom səviyyəsinə ehtiyac var

var groadMap = yeni OpenLayers.Layer.Google ("Google Yol Xəritəsi", {növü: google.maps.MapTypeId.ROADMAP, numZoomLevels: 20});


Videoya baxın: Google Maps u0026 Trucker Path Apps (Oktyabr 2021).