The Wiki for Tale 4 is in read-only mode and is available for archival and reference purposes only. Please visit the current Tale 11 Wiki in the meantime.

If you have any issues with this Wiki, please post in #wiki-editing on Discord or contact Brad in-game.

User:Tut Bastet

From A Tale in the Desert
Revision as of 06:49, 30 March 2010 by Tut Bastet (talk | contribs)
Jump to navigationJump to search

// This file adds a new circle overlay to GMaps2 // it is really a many-pointed polygon, but look smooth enough to be a circle. var CircleOverlay = function(latLng, radius, strokeColor, strokeWidth, strokeOpacity, fillColor, fillOpacity) { this.latLng = latLng; this.radius = radius; this.strokeColor = strokeColor; this.strokeWidth = strokeWidth; this.strokeOpacity = strokeOpacity; this.fillColor = fillColor; this.fillOpacity = fillOpacity; }

// Implements GOverlay interface CircleOverlay.prototype = GOverlay;

CircleOverlay.prototype.initialize = function(map) { this.map = map; }

CircleOverlay.prototype.clear = function() { if(this.polygon != null && this.map != null) { this.map.removeOverlay(this.polygon); } }

// Calculate all the points and draw them CircleOverlay.prototype.redraw = function(force) { var d2r = Math.PI / 180; circleLatLngs = new Array(); var circleLat = this.radius * 0.014483; // Convert statute miles into degrees latitude var circleLng = circleLat / Math.cos(this.latLng.lat() * d2r); var numPoints = 40;

// 2PI = 360 degrees, +1 so that the end points meet for (var i = 0; i < numPoints + 1; i++) { var theta = Math.PI * (i / (numPoints / 2)); var vertexLat = this.latLng.lat() + (circleLat * Math.sin(theta)); var vertexLng = this.latLng.lng() + (circleLng * Math.cos(theta)); var vertextLatLng = new GLatLng(vertexLat, vertexLng); circleLatLngs.push(vertextLatLng); }

this.clear(); this.polygon = new GPolygon(circleLatLngs, this.strokeColor, this.strokeWidth, this.strokeOpacity, this.fillColor, this.fillOpacity); this.map.addOverlay(this.polygon); }

CircleOverlay.prototype.remove = function() { this.clear(); }

CircleOverlay.prototype.containsLatLng = function(latLng) { // Polygon Point in poly if(this.polygon.containsLatLng) { return this.polygon.containsLatLng(latLng); } }

CircleOverlay.prototype.setRadius = function(radius) { this.radius = radius; }

CircleOverlay.prototype.setLatLng = function(latLng) { this.latLng = latLng; }

circle = new CircleOverlay(map.getCenter(), circleRadius, "#336699", 1, 1, '#336699', 0.25); map.addOverlay(circle);