Expand my Community achievements bar.

google map use afcs

Avatar

Former Community Member

I have problem.

I whrite like http://demo.ashorten.com/gmapcocomo/ .

Use afcs share google map in same room.

But I have to  create new room first ,and  enter my create room.

example: I create first room ,name is new. After enter room(new),I can look map and if other people come in, I change LatLng and  their map also

change.Like URL.

But when I create second room or more, map can't show.Only first room can use. I don't know why.

I create room anyone collectionNodes  have ShareMap.

thx.

map code:

<?xml version="1.0" encoding="utf-8"?>
<SuperPanel xmlns="net.brandonmeyer.containers.*" xmlns:mx="http://www.adobe.com/2006/mxml" title="Google map"
allowClose="true" allowDrag="true" allowMaximize="true" allowMinimize="true" close="PopUpEffect.Hide(this);" allowResize="true"
width="550" height="400" fontSize="12" xmlns:rtc="AfcsNameSpace"
  xmlns:maps="com.google.maps.*"  >
<mx:Script>
  <![CDATA[
  import com.google.maps.services.GeocodingEvent;
  import com.google.maps.services.ClientGeocoder;
  import mx.events.ItemClickEvent;
  import mx.managers.PopUpManager;
  import com.google.maps.styles.FillStyle;
  import com.google.maps.styles.StrokeStyle;
  import com.google.maps.InfoWindowOptions;
  import com.google.maps.MapMouseEvent;
  import com.google.maps.overlays.Marker;
  import com.google.maps.overlays.MarkerOptions;
  import com.google.maps.MapZoomEvent;
  import com.google.maps.controls.MapTypeControl;
  import com.google.maps.controls.ZoomControl;
  import com.google.maps.controls.PositionControl;
  import com.adobe.rtc.session.ConnectSession;
  import com.google.maps.MapMoveEvent;
  import com.google.maps.LatLng;
  import com.google.maps.MapEvent;
  import com.google.maps.MapType;
  import mx.controls.Alert;
  import session.session;
 
  protected var _sharedMapModel:SharedMapModel;
 
  private var marker:Marker;
  private var markerList:Array = new Array();
 
  private var zoomControl:ZoomControl = new ZoomControl();
  private var mapTypeControl:MapTypeControl = new MapTypeControl();
  private var positionControl:PositionControl = new PositionControl();
 
  private function init():void {
    auth.userName=session.session.user_name;
    cSession.roomURL="http://connectnow.acrobat.com/ncyumis/"+roomname;
  }
  private function onMapReady(event:MapEvent):void {
    map.visible = false;
    this.map.setCenter(new LatLng(45.468799,9.188004),14, MapType.NORMAL_MAP_TYPE);
    addMapControls();
    setupSharedMap(); 
  }
 
  private function addMapControls():void {
    map.addControl(zoomControl);
    map.addControl(mapTypeControl);
    map.addControl(positionControl);
  }
 
  private function removeMapControls():void {
    map.removeControl(zoomControl);
    map.removeControl(mapTypeControl);
    map.removeControl(positionControl);
  }
 
  private function setupMapListeners():void {
    map.addEventListener(MapMoveEvent.MOVE_END, onMapMoveEnd);
    map.addEventListener(MapZoomEvent.ZOOM_CHANGED, onMapZoom);
    map.addEventListener(MapEvent.MAPTYPE_CHANGED, onMapTypeChange);
  }
 
  private function setupSharedMap():void {
    _sharedMapModel = new SharedMapModel();
    _sharedMapModel.subscribe("sharedMap");
    _sharedMapModel.addEventListener("subscribed",onSubscribed);
    _sharedMapModel.addEventListener("latLngChange",onPositionChange);
    _sharedMapModel.addEventListener("zoomChange",onZoomChange);
    _sharedMapModel.addEventListener("mapTypeChange",onMapTypeChanged);
    _sharedMapModel.addEventListener("markerChange",onMarkerChange);

  }
 
  private function addMarkerToMap():void {
    marker = new Marker(map.getCenter(),new MarkerOptions({draggable:true,strokeStyle: new StrokeStyle({color: 0x000000}),fillStyle: new FillStyle({color: 0x0000FF, alpha: 0.8}),tooltip:ConnectSession.primarySession.userManager.getUserDescriptor(ConnectSession.primarySession.userManager.myUserID).displayName}));
    map.addOverlay(marker);
    marker.addEventListener(MapEvent.OVERLAY_MOVED, onOverlayMove);
    _sharedMapModel.marker = marker;
  }
 
  private function onSubscribed(p_evt:Event=null):void {
    _sharedMapModel.removeEventListener("subscribed",onSubscribed);
    setupMapListeners();
    addMarkerToMap();
    map.visible = true;
  }
 
  private function onMapMoveEnd(event:MapMoveEvent):void {
    _sharedMapModel.latLng = map.getCenter();
  }
 
  protected function onPositionChange(p_evt:Event=null):void {
    map.removeEventListener(MapMoveEvent.MOVE_END, onMapMoveEnd);
    map.setCenter(_sharedMapModel.latLng);
    map.addEventListener(MapMoveEvent.MOVE_END, onMapMoveEnd);
  }
 
  private function onMapZoom(event:MapZoomEvent):void {
    _sharedMapModel.zoomLevel = map.getZoom();
  }
 
  protected function onZoomChange(p_evt:Event=null):void {
    map.removeEventListener(MapZoomEvent.ZOOM_CHANGED, onMapZoom);
    map.setZoom(_sharedMapModel.zoomLevel);
    map.addEventListener(MapZoomEvent.ZOOM_CHANGED, onMapZoom);
  }
 
  private function onOverlayMove(event:MapEvent):void {
    _sharedMapModel.marker = marker;
  }
 
  protected function onMarkerChange(p_evt:Event=null):void {
    markerList.push(_sharedMapModel.marker);
    for each (var currentMarker:Marker in markerList) {
    if (currentMarker.getOptions().tooltip == _sharedMapModel.marker.getOptions().tooltip) {
      map.removeOverlay(currentMarker);
    }
    }
    map.addOverlay(_sharedMapModel.marker);
  }
 
  private function onMapTypeChange(event:MapEvent):void {
    _sharedMapModel.mapType = map.getCurrentMapType().getName();
  }
 
  protected function onMapTypeChanged(p_evt:Event=null):void {
    map.removeEventListener(MapEvent.MAPTYPE_CHANGED, onMapTypeChange);
   
    switch (_sharedMapModel.mapType)
    {
    case "Map":
    {
      map.setMapType(MapType.NORMAL_MAP_TYPE);
      break;
    }
    case "Satellite":
    {
      map.setMapType(MapType.SATELLITE_MAP_TYPE);
      break;
    }
    case "Hybrid":
    {
      map.setMapType(MapType.HYBRID_MAP_TYPE);
      break;
    }
    case "Terrain":
    {
      map.setMapType(MapType.PHYSICAL_MAP_TYPE);
      break;
    }
    }

  }

 
  public function searchAddress(addr:String):void
            {
    var geocoder:ClientGeocoder = new ClientGeocoder();
      geocoder.addEventListener(GeocodingEvent.GEOCODING_SUCCESS,
    function(event:GeocodingEvent):void
    {
            var placemarks:Array = event.response.placemarks;
            if (placemarks.length > 0)
            {
              map.setCenter(placemarks[0].point);
              _sharedMapModel.latLng = map.getCenter();
            }
          });
    geocoder.addEventListener(GeocodingEvent.GEOCODING_FAILURE,
    function(event:GeocodingEvent):void
    {
      Alert.show("Geocoding failed");
    });
    geocoder.geocode(addr);
  }

 
  ]]>
</mx:Script>
<rtc:AdobeHSAuthenticator id="auth"  />
    <rtc:RoomSettings autoPromote="true" roomBandwidth="auto" id="roomSettings"/>
    <rtc:ConnectSessionContainer visible="false" id="cSession" authenticator="{auth}" autoLogin="true" initialRoomSettings="{roomSettings}" />
<mx:HBox width="100%" height="24" verticalAlign="middle">
  <mx:TextInput id="searchStr" enter="searchAddress(searchStr.text)" width="250"/>
  <mx:Button label="Search" click="searchAddress(searchStr.text)" />

    </mx:HBox>

<maps:Map id="map" top="70" left="0" right="0" bottom="0" width="100%" height="100%"
  key="map Key"
  mapevent_mapready="onMapReady(event)" />

</SuperPanel>

2 Replies

Avatar

Former Community Member

Hi Cha Yi,

Is it possible you can share the example of the googlemap collaboration using Adobe LCCS? I am stuck at creating the MapSharedModel class...

Regards,

Tan

Avatar

Former Community Member

Hi All

Is it possible to use any other map layers as a base layer instead of google, yahoo etc. using lccs.

Regards

Atif