Dear colleagues,
I am posting here my class that I created for interaction with the
Panoramio google maps, I hope it is useful
//
#######################################################################
package {
import flash.net.*;
import flash.events.*;
import flash.display.*;
import flash.text.*;
import com.google.maps.*;
import com.google.maps.overlays.*;
import com.google.maps.controls.*;
import com.google.maps.styles.*;
import com.google.maps.services.*;
public class Panoramio_API extends Object {
private var strUrl:String = "";
private var strDadoRetorno:String = "";
private var objDado:Object = null;
private var map:Map;
private var markers:Array = [];
public function Panoramio_API(mapGoogle:Map) {
map = mapGoogle;
}
public function GetURL(url:String):void {
if(url.length>0 && url!=null){
strUrl = url;
}else{
strUrl = "";
}
var urlRequest:URLRequest = new URLRequest(strUrl);
var urlLoader:URLLoader = new URLLoader(urlRequest);
urlLoader.addEventListener("complete", GetURL_Complete);
}
private function GetURL_Complete(event:Event):void{
if(event.target.data.length>0 &&
event.target.data!=null){
strDadoRetorno = event.target.data;
CriaObjeto();
}else{
strDadoRetorno = "";
}
}
private function CriaObjeto(){
objDado = new Object();
var strInicio:String = strDadoRetorno.split("[")[0];
var strDado:String =
strDadoRetorno.split("[")[1].split("]")[0];
objDado.length = new int(strInicio.split(":
")[1].split(",")[0]);
objDado.dado = new Array(objDado.length);
for(var i:int=0; i<objDado.dado.length; i++){
var lstItem:Array =
strDado.split("{")[i+1].split("}")[0].split
(",");
objDado.dado[i] = new Object();
for(var w:int=0; w<lstItem.length; w++){
var strNomeObject:String =
Trim(RemoveChar(lstItem[w].split(":")
[0],"\""));
objDado.dado[i][strNomeObject] =
lstItem[w].split(":")[1];
if(lstItem[w].split(":").length>2){
for(var j:int=2;
j<lstItem[w].split(":").length; j++){
objDado.dado[i][strNomeObject] += ":"+lstItem[w].split(":")[j];
}
}
objDado.dado[i][strNomeObject] =
Trim(RemoveChar(objDado.dado[i]
[strNomeObject],"\""));
}
}
CriaMarkers()
}
public function CriaMarkers():void{
var bounds:LatLngBounds = new LatLngBounds();
for(var w:int=0; w<markers.length; w++) {
map.removeOverlay(markers[w]);
}
markers = new Array();
for(var i:int=0; i < objDado.dado.length; i++) {
var objMarker:Object = objDado.dado[i];
var marker:Marker = CriaMarker(objMarker);
var latlng:LatLng = new
LatLng(Number(objMarker.latitude), Number
(objMarker.longitude));
map.addOverlay(marker);
bounds.extend(latlng);
markers.push(marker);
}
}
public function CriaMarker(objMarker:Object): Marker {
var _id:Number =
Number(objMarker.photo_id);
var _titulo:String = objMarker.photo_title;
var _link:String = objMarker.photo_url;
var _img:String =
objMarker.photo_file_url;
var _thumbnail:String = _img.split("small")
[0]+"mini_square"+_img.split("small")[1];
var _longitude:Number = Number(objMarker.longitude);
var _latitude:Number = Number(objMarker.latitude);
var _width:Number =
Number(objMarker.width);
var _height:Number =
Number(objMarker.height);
var _date:String = objMarker.upload_date;
var _userID:Number =
Number(objMarker.owner_id);
var _userNome:String = objMarker.owner_name;
var _userLink:String = objMarker.owner_url;
var latlng:LatLng = new LatLng(_latitude, _longitude);
var marker:Marker;
var loadThumbnail:Loader = new Loader();
loadThumbnail.load(new URLRequest(_thumbnail));
marker = new Marker(latlng, new MarkerOptions({icon:
loadThumbnail}));
marker.addEventListener(MapMouseEvent.CLICK, function
(e:MapMouseEvent):void {
var loadImg:Loader = new Loader();
loadImg.contentLoaderInfo.addEventListener(Event.COMPLETE, function
(event:Event):void {
var spt_Conteudo:Sprite = new Sprite();
loadImg.x = 0;
loadImg.y = 0;
var txf_Logo:TextFormat = new
TextFormat();
txf_Logo.size = 10;
txf_Logo.font = "Arial";
txf_Logo.bold = true;
txf_Logo.color = 0x008965;
var txt_Logo:TextField = new
TextField();
txt_Logo.htmlText = "<a
href='http://www.panoramio.com/'
target='_blank'>Panoramio.com</a>";
txt_Logo.setTextFormat(txf_Logo);
txt_Logo.autoSize =
TextFieldAutoSize.LEFT;
txt_Logo.selectable = false;
txt_Logo.x = 0;
txt_Logo.y = 5;
loadImg.x = txt_Logo.x;
loadImg.y = txt_Logo.y +
txt_Logo.textHeight + 5;
loadImg.addEventListener(MouseEvent.CLICK, function
(event:MouseEvent):void {
navigateToURL(new
URLRequest(_link), "_blank");
});
var txf_Titulo:TextFormat = new
TextFormat();
txf_Titulo.size = 12;
txf_Titulo.font = "Arial";
txf_Titulo.bold = true;
txf_Titulo.color = 0x0066CC;
txf_Titulo.align = "right";
var txt_Titulo:TextField = new
TextField();
txt_Titulo.text = _titulo.toUpperCase();
txt_Titulo.setTextFormat(txf_Titulo);
txt_Titulo.autoSize =
TextFieldAutoSize.LEFT;
txt_Titulo.selectable = false;
txt_Titulo.wordWrap = true;
txt_Titulo.width = loadImg.width;
txt_Titulo.x = loadImg.x +
loadImg.width - txt_Titulo.width + 1;
txt_Titulo.y = loadImg.y +
loadImg.height + 1;
var txf_Autor:TextFormat = new
TextFormat();
txf_Autor.size = 10;
txf_Autor.font = "Arial";
txf_Autor.bold = true;
txf_Autor.color = 0xc0c0c0;
txf_Titulo.align = "right";
var txt_Autor:TextField = new
TextField();
txt_Autor.htmlText = "<a
href='"+_userLink+"'
target='_blank'>"+_userNome+"</a>";
txt_Autor.setTextFormat(txf_Autor);
txt_Autor.autoSize =
TextFieldAutoSize.LEFT;
txt_Autor.selectable = false;
txt_Autor.x = loadImg.x + loadImg.width
- txt_Autor.width +1;
txt_Autor.y = txt_Titulo.y +
txt_Titulo.textHeight + 1;
spt_Conteudo.addChild(txt_Logo);
spt_Conteudo.addChild(txt_Titulo);
spt_Conteudo.addChild(txt_Autor);
spt_Conteudo.addChild(loadImg);
var width:Number = spt_Conteudo.width;
var height:Number = spt_Conteudo.height;
var options:InfoWindowOptions = new
InfoWindowOptions
({title:_titulo, width:width+5, height:height, padding:10,
customContent: spt_Conteudo, drawDefaultFrame:true});
marker.openInfoWindow(options);
});
loadImg.load(new URLRequest(_img));
});
return marker;
}
private function Trim(strValue:String):String{
var lstTemp:Array = strValue.split(" ");
strValue = lstTemp[0];
for(var i:int=1; i<lstTemp.length; i++){
strValue += lstTemp[i];
}
return strValue;
}
private function RemoveChar(strValue:String,char:String):String{
var lstTemp:Array = strValue.split(char);
strValue = lstTemp[0];
for(var i:int=1; i<lstTemp.length; i++){
strValue += lstTemp[i];
}
return strValue;
}
}
}
//
#######################################################################
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google Maps API For Flash" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/google-maps-api-for-flash?hl=en
-~----------~----~----~----~------~----~------~--~---