BeenHere Overlay

trash

当前为 2015-08-13 提交的版本,查看 最新版本

// ==UserScript==
// @name                BeenHere Overlay
// @namespace           https://greasyfork.org/en/users/5920-rickzabel
// @description         trash
// @include             https://www.waze.com/editor/*
// @include             https://www.waze.com/*/editor/*
// @include             https://editor-beta.waze.com/*
// @version             0.0.1
// @grant               none
// ==/UserScript==
//---------------------------------------------------------------------------------------
function bootstrap_MapRaidOverlay() {
    var bGreasemonkeyServiceDefined = false;

    try {
        bGreasemonkeyServiceDefined = (typeof Components.interfaces.gmIGreasemonkeyService === "object");
    } catch (err) { /* Ignore */ }

    if (typeof unsafeWindow === "undefined" || !bGreasemonkeyServiceDefined) {
        unsafeWindow = (function() {
            var dummyElem = document.createElement('p');
            dummyElem.setAttribute('onclick', 'return window;');
            return dummyElem.onclick();
        })();
    }

    /* begin running the code! */
    setTimeout(InitMapRaidOverlay, 1000);
    //Waze.model.liveUsers.users._events.register("add", null, newLiveUser);

}

function AddRaidPolygon(raidLayer, groupPoints, groupColor, groupNumber) {

    var groupNumber = "me";
    var point = Waze.map.getExtent();
    var groupColor = 'orange';

    var groupPoints = [{
        lon: point.left,
        lat: point.top
    }, {
        lon: point.left,
        lat: point.bottom
    }, {
        lon: point.right,
        lat: point.bottom
    }, {
        lon: point.right,
        lat: point.top
    }, {
        lon: point.left,
        lat: point.top
    }];

    //console.info(raidLayer + " " + groupPoints + " " + groupColor + " " + groupNumber);
    var mro_Map = unsafeWindow.Waze.map;
    var mro_OL = unsafeWindow.OpenLayers;
    //var raidGroupLabel = groupNumber;
    var raidGroupLabel = "";
    // var groupName = groupNumber;
    var groupName = "";

    var style = {
        strokeColor: "orange",
        strokeOpacity: .9,
        strokeWidth: 3,
        fillColor: groupColor,
        fillOpacity: 0.0,
        label: raidGroupLabel,
        labelOutlineColor: "black",
        labelOutlineWidth: 3,
        fontSize: 14,
        fontColor: groupColor,
        fontOpacity: .85,
        fontWeight: "bold"
    };
    var attributes = {
        name: groupName
    };
    //console.dir(groupPoints);
    var pnt = [];
    for (i = 0; i < groupPoints.length; i++) {
        //convPoint = new OpenLayers.Geometry.Point(groupPoints[i].lon,groupPoints[i].lat).transform(new OpenLayers.Projection("EPSG:4326"), mro_Map.
        convPoint = new OpenLayers.Geometry.Point(groupPoints[i].lon, groupPoints[i].lat);
        //getProjectionObject());
        //console.log('MapRaid: ' + JSON.stringify(groupPoints[i]) + ', ' + groupPoints[i].lon + ', ' + groupPoints[i].lat);
        pnt.push(convPoint);
    }

    var ring = new mro_OL.Geometry.LinearRing(pnt);

    var polygon = new mro_OL.Geometry.Polygon([ring]);
    console.dir(polygon);

    var feature = new mro_OL.Feature.Vector(polygon, attributes, style);
    console.dir(feature);

    raidLayer.addFeatures([feature]);

}

function CurrentRaidLocation(raid_mapLayer) {
    var mro_Map = unsafeWindow.Waze.map;

    for (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);
        //console.log('MapRaid: ' + raid_mapLayer.features[i].attributes.number + ': ' + raidCenterCheck);
        if (raidCenterCheck === true) {
            var raidLocationLabel = 'Raid Group ' + raid_mapLayer.features[i].attributes.number + ' - ' + $('.WazeControlLocationInfo').text();
            setTimeout(function() {
                $('.WazeControlLocationInfo').text(raidLocationLabel);
            }, 200);
        }
    }
}



function InitMapRaidOverlay() {
    //alert("wtf");

    unsafeWindow.mapLayers = new unsafeWindow.OpenLayers.Layer.Vector("Live User View Overlay", {
        displayInLayerSwitcher: true,
        uniqueName: "__LiveUserViewOverlay"
    });

    unsafeWindow.Waze.map.addLayer(unsafeWindow.mapLayers);
    unsafeWindow.mapLayers.setVisibility(true);


    var mro_Map = unsafeWindow.Waze.map;
    var mro_OL = unsafeWindow.OpenLayers;

    if (mro_Map == null) return;
    if (mro_OL == null) return;

    // mapLayers.removeAllFeatures();

    AddRaidPolygon(mapLayers);


    //console.info('############# userview addded: left ' + point.left + ' top: ' + point.top + ' bottom: ' + point.bottom + ' right: ' + point.right + ' bottom: ' + point.bottom);
    // AddRaidPolygon(mapLayers, viewPoints, color, name);
    //console.info('############# userview addded ');
    //console.info(mapLayers + " " + viewPoints + " " + color + " " + name);
    //}

    // setTimeout(function(){InitMapRaidOverlay()},1000);
    mro_Map.events.register("moveend", Waze.map, function() {
        AddRaidPolygon(mapLayers);
    });
    mro_Map.events.register("zoomend", Waze.map, function() {
        AddRaidPolygon(mapLayers);
    });
    //Waze.model.liveUsers.users.models[0]._events.register("change:showLayer", null, function(){//console.info('change:showLayer');});

}

function newLiveUser() {
    //console.info('########### add');
    //console.info(this);
    for (var i = 0; i < this.models.length; i++) {
        var userObj = this.models[i];
        userObj._events.register("change:center", null, function() {
            console.info('change:center');
        });
        userObj._events.register("move", null, function() {
            console.info('move');
        });
        userObj._events.register("moved", null, function() {
            console.info('move');
        });
    }
}

bootstrap_MapRaidOverlay();