Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package worldofconflict.components;
- import google.maps.LatLng;
- import google.maps.Maps;
- import google.maps.Marker;
- import haxe.ui.core.Component;
- class Map extends Component {
- public static inline var MARKER_RED:String = "https://storage.googleapis.com/support-kms-prod/SNP_2752125_en_v0";
- public static inline var MARKER_BLUE:String = "https://storage.googleapis.com/support-kms-prod/SNP_2752068_en_v0";
- public static inline var MARKER_PINK:String = "https://storage.googleapis.com/support-kms-prod/SNP_2752264_en_v0";
- public static inline var MARKER_YELLOW:String = "https://storage.googleapis.com/support-kms-prod/SNP_2752063_en_v0";
- public static inline var MARKER_GREEN:String = "https://storage.googleapis.com/support-kms-prod/SNP_2752129_en_v0";
- private var _maps:google.maps.Maps;
- private var _map:google.maps.Map;
- public function new() {
- super();
- addClass("map");
- }
- private var _key:String;
- public var key(get, set):String;
- private function get_key():String {
- return _key;
- }
- private function set_key(value:String):String {
- _key = value;
- _maps = new Maps(_key);
- var minZoomLevel = 2;
- _maps.init(function() {
- var options:Dynamic = { };
- options.zoom = 3;
- options.mapTypeId = _mapType;
- options.mapTypeControl = false;
- options.streetViewControl = false;
- if (_center != null) {
- options.center = _center;
- } else {
- _center = new LatLng(35.88905007936091, -8.96484375);
- options.center = _center;
- }
- _map = new google.maps.Map(this.element, options);
- _map.addListener("click", function(e) {
- var mapEvent:MapEvent = new MapEvent(MapEvent.MAP_CLICKED);
- mapEvent.latlng = new LatLng(e.latLng.lat(), e.latLng.lng());
- dispatch(mapEvent);
- });
- _map.addListener("center_changed", function() {
- var latNorth = _map.getBounds().getNorthEast().lat();
- var latSouth = _map.getBounds().getSouthWest().lat();
- var newLat = null;
- if (latNorth < 85 && latSouth >-85) {
- return;
- } else {
- if (latNorth > 85 && latSouth <-85) {
- return;
- } else {
- if (latNorth > 85) {
- newLat = _map.getCenter().lat() - (latNorth-85);
- }
- if (latSouth <-85) {
- newLat = _map.getCenter().lat() - (latSouth+85);
- }
- }
- }
- var newCenter = new LatLng( newLat , _map.getCenter().lng() );
- _map.setCenter(newCenter);
- });
- _map.addListener("zoom_changed", function() {
- if (_map.getZoom() < minZoomLevel) _map.setZoom(minZoomLevel);
- });
- });
- return value;
- }
- private var _mapType:String = "roadmap";
- public var mapType(get, set):String;
- private function get_mapType():String {
- return _mapType;
- }
- private function set_mapType(value:String):String {
- _mapType = value;
- if (_map != null) {
- _map.setMapTypeId(_mapType);
- }
- return value;
- }
- private var _center:LatLng;
- public var center(get, set):LatLng;
- private function get_center():LatLng {
- return _center;
- }
- private function set_center(value:LatLng):LatLng {
- _center = value;
- if (_map != null) {
- _map.setCenter(value);
- }
- return value;
- }
- public function addMarker(position:LatLng = null, icon:String = null, title:String = null):Marker {
- var options:Dynamic = { };
- options.map = _map;
- if (position != null) {
- options.position = position;
- }
- if (icon != null) {
- options.icon = icon;
- }
- if (title != null) {
- options.title = title;
- }
- var marker = new Marker(options);
- return marker;
- }
- public function removeMarker(marker:Marker) {
- marker.setMap(null);
- }
- public function panBy(x:Float, y:Float) {
- _map.panBy(x, y);
- }
- public function panTo(latlng:LatLng) {
- _map.panTo(latlng);
- }
- public var cursor(null, set):String;
- private function set_cursor(value:String):String {
- if (value == null) {
- value = "";
- }
- _map.setOptions({draggableCursor: value});
- return value;
- }
- private static function parseLatLng(s:String):LatLng {
- var p = s.split(",");
- var lat = Std.parseFloat(StringTools.trim(p[0]));
- var lng = Std.parseFloat(StringTools.trim(p[1]));
- return new LatLng(lat, lng);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement