[Embed(source="res/blocker.png")]private var blockerClass:Class; private var show_first:Boolean = true; private var gsvHeading:Number = 0; private const EPSG_GEOGRAPHIC:Number = 4326; private var datumTranform:Number; [Bindable] private var transForward:Boolean private var popupsBlocked:Boolean; private var svWinIsReady:Boolean = false; private var noSVImageAvailableMsg:String = "None"; private var attempts:int = 0; private var windowWidth:Number = 500; private var windowHeight:Number = 300; private function PadColor(clr:*):String { var hexString:* = clr.toString(16).toUpperCase(); var cnt:int = 6 - hexString.length; var zeros:String = ""; for (var i:int = 0; i < cnt; i++){ zeros += "0"; } return zeros + hexString; } private function CheckForPopUpBlockers():void { if (ExternalInterface.available){ var ObjID:String = ExternalInterface.objectID; const result:Boolean = ExternalInterface.call("document.setFlexApp", ObjID); if (result === false){ }else{ var chrome:Boolean; ExternalInterface.addCallback("setChromeBlockerResponce", ChromeBlockerResponce); if(ExternalInterface.call("document.checkIfChrome")){ ExternalInterface.call("document.detectChromeBlocker"); }else{ if(ExternalInterface.call("document.detectBlocker")){ popupWasBlocked(); }else{ popupNotBlocked(); } } } } } private function ChromeBlockerResponce(wasBlocked:Boolean):void { if(wasBlocked){ popupWasBlocked(); }else{ popupNotBlocked(); } } private function popupWasBlocked():void { popupsBlocked = true; } private function popupNotBlocked():void { popupsBlocked = false; ExternalInterface.addCallback("setLatLonYaw", setLatLonYawHandler); ExternalInterface.addCallback("setNoStreetView", noStreetViewAvailable); ExternalInterface.addCallback("windowReady", svWindowIsReady); ExternalInterface.addCallback("windowIsClosing", svWindowIsClosing); ExternalInterface.call("document.openSVwin",noSVImageAvailableMsg,windowWidth,windowHeight); } private function svWindowIsReady():void { svWinIsReady = true; } private function svWindowIsClosing():void { svWinIsReady = false; clear(); } private function noStreetViewAvailable():void { clear(); } //*********************************************************************************************************** private function clear():void { if(graphicsLayer){ graphicsLayer.clear(); } } private function setLatLonYawHandler(lat:Number, lon:Number, rotation:Number):void { try{ try{ var svgGraphic:Graphic = graphicsLayer.graphicProvider[0]; } catch (err:Error) { } } catch (err:Error) { } if(svgGraphic){ svgGraphic.attributes.rotation = gsvHeading = rotation; if(svgGraphic.attributes.lat != lat || svgGraphic.attributes.lng != lon){ svgGraphic.attributes.lat = lat; svgGraphic.attributes.lng = lon; const gPnt:MapPoint = svgGraphic.geometry as MapPoint; var mPoint:MapPoint = new MapPoint(lon,lat, new SpatialReference(EPSG_GEOGRAPHIC)); if (mainmap.spatialReference.wkid == EPSG_GEOGRAPHIC || mainmap.spatialReference.isWebMercator()){ if(mainmap.spatialReference.wkid == EPSG_GEOGRAPHIC){ svgGraphic.geometry = mPoint; }else{ mPoint = WebMercatorUtil.geographicToWebMercator(mPoint) as MapPoint; } if (mPoint.x != gPnt.x && mPoint.y != gPnt.y){ mainmap.centerAt(mPoint); svgGraphic.geometry = mPoint; } svgGraphic.refresh(); }else{ trace("After SV Lat: " + lat + ", " + "Lon: " + lon); const projectParameters:ProjectParameters = new ProjectParameters; projectParameters.geometries = [mPoint]; projectParameters.outSpatialReference = mainmap.spatialReference; if(datumTranform) { var dt:DatumTransform = new DatumTransform(); dt.wkid = datumTranform; projectParameters.datumTransform = dt; projectParameters.transformForward = transForward; } geometryService.addEventListener(GeometryServiceEvent.PROJECT_COMPLETE, project2Map); geometryService.project(projectParameters); } }else{ svgGraphic.refresh(); } } } private function project2Map(event:GeometryServiceEvent):void { try{ var mPoint:MapPoint = (event.result as Array)[0] as MapPoint; trace("End BNG X: " + mPoint.x + ", " + "Y: " + mPoint.y); if (mPoint){ try{ var svgGraphic:Graphic = graphicsLayer.graphicProvider[0]; } catch (err:Error) { } if(svgGraphic){ var gPnt:MapPoint = svgGraphic.geometry as MapPoint; svgGraphic.attributes.rotation = gsvHeading; if (mPoint.x != gPnt.x && mPoint.y != gPnt.y){ mainmap.centerAt(mPoint); svgGraphic.geometry = mPoint; } svgGraphic.refresh(); } } }catch(err:Error){ //Alert.show(err.toString()); } geometryService.removeEventListener(GeometryServiceEvent.PROJECT_COMPLETE, project2Map); } //*********************************************************************************************************** private function DaumLoadView(mPoint:MapPoint):void { if(show_first){ show_first = false; StreetView_JavaScript.ShowRun(); CheckForPopUpBlockers(); } attempts = 0; DaumLoadViewMode = false; mainmap.cursorManager.removeAllCursors(); navigation.btnBar.selectedIndex = 0; navigation.doNavAction_changeNavigation("pan"); //var mPoint:MapPoint = mainmap.toMapFromStage(event.stageX, event.stageY); //mainmap.centerAt(mPoint); var svgGraphic:Graphic; if(graphicsLayer.graphicProvider){ try{ svgGraphic = graphicsLayer.graphicProvider[0]; } catch (err:Error) { } } if(!svgGraphic){ var atts:Object = { rotation: gsvHeading, lat: 0, lng: 0 }; var dPoint:MapPoint = mPoint; svgGraphic = new Graphic(dPoint); svgGraphic.attributes = atts; svgGraphic.symbol = new StreetViewManSymbol(); svgGraphic.useHandCursor = true; svgGraphic.mouseChildren = true; graphicsLayer.add(svgGraphic); } svgGraphic.geometry = mPoint; svgGraphic.visible = true; svgGraphic.symbol = new StreetViewManSymbol(); if (mainmap.spatialReference.wkid == EPSG_GEOGRAPHIC || mainmap.spatialReference.isWebMercator()){ var gPoint:MapPoint; if(mainmap.spatialReference.wkid == EPSG_GEOGRAPHIC){ gPoint = mPoint; }else{ mPoint = WebMercatorUtil.webMercatorToGeographic(mPoint) as MapPoint; } var lng:String = mPoint.x.toFixed(12); var lat:String = mPoint.y.toFixed(12); svgGraphic.attributes.lat = lat; svgGraphic.attributes.lng = lng; ExternalInterface.call("document.openSVwin",noSVImageAvailableMsg,windowWidth,windowHeight); checkForSVPano(lat, lng); }else{ var outSR:SpatialReference = new SpatialReference(EPSG_GEOGRAPHIC); const projectParameters:ProjectParameters = new ProjectParameters; projectParameters.geometries = [mPoint]; projectParameters.outSpatialReference = outSR; if(datumTranform) { var dt:DatumTransform = new DatumTransform(); dt.wkid = datumTranform; projectParameters.datumTransform = dt; projectParameters.transformForward = transForward; } geometryService.addEventListener(GeometryServiceEvent.PROJECT_COMPLETE, project2Geographic); geometryService.project(projectParameters); } ClosePanelRV_Ok = false; } private function checkForSVPano(lat:String, lng:String):void { if(svWinIsReady){ attempts = 0; ExternalInterface.call("winobj.checkForSVpano", lat, lng, gsvHeading); }else{ if(attempts < 4){ var timeout:uint = setTimeout(function():void{checkForSVPano(lat, lng);}, 200); } attempts++; } } private function project2Geographic(event:GeometryServiceEvent):void { try{ var mPoint:MapPoint = (event.result as Array)[0]as MapPoint; var lng:String = mPoint.x.toFixed(12); var lat:String = mPoint.y.toFixed(12); try{ var svgGraphic:Graphic = graphicsLayer.graphicProvider[0]; } catch (err:Error) { } if(svgGraphic){ svgGraphic.attributes.lat = lat; svgGraphic.attributes.lng = lng; } trace("Lat: " + lat + ", " + "Lon: " + lng); ExternalInterface.call("document.openSVwin",noSVImageAvailableMsg,windowWidth,windowHeight); checkForSVPano(lat, lng); }catch (error:Error){ //Alert.show(error.toString()); } geometryService.removeEventListener(GeometryServiceEvent.PROJECT_COMPLETE, project2Geographic); } |