- // ==UserScript==
- // @name mMR West Bank overlay
- // @namespace https://gf.qytechs.cn/users/45389
- // @version 2018.03.04.001
- // @description Adds a region overlay for the 2018 West Bank (Israel) mMR
- // @author MapOMatic
- // @include /^https:\/\/(www|beta)\.waze\.com\/(?!user\/)(.{2,6}\/)?editor\/?.*$/
- // @require https://gf.qytechs.cn/scripts/24851-wazewrap/code/WazeWrap.js
- // @license None! You may reuse this code for whatever you want.
- // ==/UserScript==
-
- (function() {
- 'use strict';
-
- var _fillOpacity = 0.2;
- var _color = "Magenta";
- var _raid_mapLayer;
-
- function bootstrap() {
- if (W && W.loginManager && W.loginManager.isLoggedIn()) {
- InitMapRaidOverlay();
- } else {
- setTimeout(bootstrap, 500);
- }
- }
-
- bootstrap();
-
- function AddRaidPolygon(raidLayer,groupPoints,state1, state2){
- var mro_Map = Waze.map;
- var mro_OL = OpenLayers;
-
- var style = {
- strokeColor: _color,
- strokeOpacity: 0.30,
- strokeWidth: 3,
- fillColor: _color,
- fillOpacity: _fillOpacity,
- label: state1,
- labelOutlineColor: "Black",
- labelOutlineWidth: 3,
- fontSize: 14,
- fontColor: _color,
- fontOpacity: 0.85,
- fontWeight: "bold"
- };
-
- var attributes = {
- state1: state1,
- state2: state2
- };
-
- var pnt= [];
- for(let i=0;i<groupPoints.length;i++){
- let convPoint = new OpenLayers.Geometry.Point(groupPoints[i].lon,groupPoints[i].lat).transform(new OpenLayers.Projection("EPSG:4326"), mro_Map.getProjectionObject());
- pnt.push(convPoint);
- }
-
- var ring = new mro_OL.Geometry.LinearRing(pnt);
- var polygon = new mro_OL.Geometry.Polygon([ring]);
-
- var feature = new mro_OL.Feature.Vector(polygon,attributes,style);
- raidLayer.addFeatures([feature]);
- }
-
- function CurrentRaidLocation(raid_mapLayer){
- var mro_Map = Waze.map;
-
- var state1Array = [];
- var region = '';
- for(let i=0;i<raid_mapLayer.features.length;i++){
- var raidMapCenter = mro_Map.getCenter();
- var raidCenterPoint = new OpenLayers.Geometry.Point(raidMapCenter.lon,raidMapCenter.lat);
- var raidCenterCheck = raid_mapLayer.features[i].geometry.components[0].containsPoint(raidCenterPoint);
-
- if(raidCenterCheck === true){
- state1Array.push(raid_mapLayer.features[i].attributes.state1);
- if (!region.length) region = raid_mapLayer.features[i].attributes.state2;
- }
- }
- var label = state1Array.length ? state1Array.join(', ') + ', ' + region : '';
- }
-
- var _layerVisibleSetting = 'israel-mapraid-2018-visible';
- function loadLayerVisible() {
- var vis = localStorage.getItem(_layerVisibleSetting);
- return vis === null || vis === 'true';
- }
- function saveLayerVisible(value) {
- localStorage.setItem(_layerVisibleSetting, value);
- }
- function onLayerCheckboxChanged(value) {
- saveLayerVisible(value);
- _raid_mapLayer.setVisibility(value);
- }
-
- function InitMapRaidOverlay(){
- var mro_Map = Waze.map;
- var mro_OL = OpenLayers;
- var visible = loadLayerVisible();
-
- _raid_mapLayer = new mro_OL.Layer.Vector('Israel 2018 MapRaid', {
- displayInLayerSwitcher: true,
- uniqueName: "_israelMapRaid2018"
- });
-
- mro_Map.addLayer(_raid_mapLayer);
- _raid_mapLayer.setZIndex(100);
- _raid_mapLayer.setVisibility(visible);
- W.map.events.register("moveend",null,() => CurrentRaidLocation(_raid_mapLayer));
-
- a1.forEach(state => {
- AddRaidPolygon(_raid_mapLayer, state.coords, '', '');
- });
-
- CurrentRaidLocation(_raid_mapLayer);
-
- WazeWrap.Interface.AddLayerCheckbox('Display', 'mMR West Bank', visible, onLayerCheckboxChanged);
- }
-
- var a1 = [{"coords":[{"lon": "35.52011","lat": "32.4210"},
- {"lon": "35.22413","lat": "32.55095"},
- {"lon": "34.93360","lat": "31.34581"},
- {"lon": "35.38794","lat": "31.34587"},
- {"lon": "35.52011","lat": "32.42103"}
- ]
- }];
- })();