|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Accueil → WINDEV Mobile 2024 → MapAddItinerary / MapDeleteItinerary Developer to iOS Mobile Plataform with Windev Mobile < 20 version |
MapAddItinerary / MapDeleteItinerary Developer to iOS Mobile Plataform with Windev Mobile < 20 version |
Débuté par adrianoboller, 19 nov. 2014 11:56 - 22 réponses |
| |
| | | |
|
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 19 novembre 2014 - 11:56 |
ProcedureWS_CEP_Rota(LOCALOrigem,LOCALDestino,LOCALDebugSN)
IFGloDebugSN="S"THEN DebugSN="S" END
IFOrigem<>""ANDDestino=""THEN Destino=Origem END
nVirgula isint=0
nID_Numero isint=1 nID_Endereco isint=1 nID_Bairro01 isint=1 nID_Bairro02 isint=1 nID_Cidade01 isint=1 nID_Cidade02 isint=1 nID_Estado isint=1 nID_Pais isint=1 nID_CEP isint=1 nQTD_ADDRESS_COMPONENT isint=0
GloVoceEnderecoLongo="ERRO" GloDestinoEnderecoLongo="ERRO" GloVoceLatitude=0 GloVoceLongitude=0 GloDestinoLatitude=0 GloDestinoLongitude=0
GloLatitudeNorte="" GloLongitudeNorte=""
GloLatitudeSul="" GloLongitudeSul=""
GloTempoDestino="" GloTempoDestinoText="" GloTempoTaxi=""
GloDistanciaDestino="" GloDistanciaDestinoText="" GloDistanciaTaxi=""
ok isboolean=False
IFOrigem<>""ANDDestino<>""
ChangeCharset(charsetOccidental)
Origem=Replace(Origem," ","+")
Origem=Capitalize(WS_RemoveAcentos(Origem))
Destino=Replace(Destino," ","+")
Destino=Capitalize(WS_RemoveAcentos(Destino))
UrlRota isstring="http://maps.googleapis.com/maps/api/directions/xml?origin="+Origem+"&destination="+Destino+"&sensor=false&mode=driving"
IFDebugSN="S"THEN Info("URL Busca Origem Google",UrlRota) END ok=HTTPRequest(UrlRota)
IFok=TrueTHEN
XmlResultado isstring=WS_Android_IOS_HTTPGetResult()
IFPositionOccurrence(XmlResultado,"<status>OK</status>",firstRank,FromBeginning) >0ORPositionOccurrence(XmlResultado,"<status>ok</status>",firstRank,FromBeginning) >0
XmlResultado=WS_RemoveAcentos(XmlResultado)
IFLength(XmlResultado) >0THEN
GloRotaEncode=XmlResultado nInicioPoint isint=PositionOccurrence(XmlResultado,"<copyrights>",firstRank,FromBeginning) GloRotaEncode=Middle(XmlResultado,nInicioPoint,Length(XmlResultado)) nInicioPoint=PositionOccurrence(XmlResultado,"<points>",firstRank,FromBeginning) nFinalPoint isint=PositionOccurrence(XmlResultado,"</points>",firstRank,FromBeginning) GloRotaEncode=Middle(XmlResultado,nInicioPoint,nFinalPoint-nInicioPoint)
Info("POINT",GloRotaEncode)
sXmlResultadoRecorte isstring=XmlResultado
XmlResultado=WS_RemoveCaracteresRota(XmlResultado)
IFDebugSN="S"THEN Info("Retorno XML Busca Origem",XmlResultado) END
nInicio isint=PositionOccurrence(XmlResultado,"</step>",lastRank,FromBeginning) +7 XmlResultado=Middle(XmlResultado,nInicio,Length(XmlResultado)) XmlResultado="<leg>"+XmlResultado
nFim isint=PositionOccurrence(XmlResultado,"</leg>",firstRank,FromBeginning) +5 XmlResultado=Middle(XmlResultado,1,nFim)
IFIniOSMode() =TrueTHEN
NoXml isstring=XMLExtractString(XmlResultado,"leg")
GloVoceEnderecoLongo=XMLExtractString(NoXml,"start_address") GloVoceEnderecoLongo=Capitalize(GloVoceEnderecoLongo)
GloDestinoEnderecoLongo=XMLExtractString(NoXml,"end_address") GloDestinoEnderecoLongo=Capitalize(GloDestinoEnderecoLongo)
NoXml1 isstring=XMLExtractString(NoXml,"duration") GloTempoDestino=XMLExtractString(NoXml1,"value") GloTempoDestinoText=XMLExtractString(NoXml1,"text") GloTempoTaxi=GloTempoDestino
NoXml1=XMLExtractString(NoXml,"distance") GloDistanciaDestino=XMLExtractString(NoXml1,"value") GloDistanciaDestinoText=XMLExtractString(NoXml1,"text") GloDistanciaTaxi=GloDistanciaDestino
NoXml1=XMLExtractString(NoXml,"start_location") IFVal(XMLExtractString(NoXml1,"lat")) <0 GloVoceLatitude=XMLExtractString(NoXml1,"lat") GloVoceLongitude=XMLExtractString(NoXml1,"lng") END
NoXml1=XMLExtractString(NoXml,"end_location") IFVal(XMLExtractString(NoXml1,"lat")) <0THEN GloDestinoLatitude=XMLExtractString(NoXml1,"lat") GloDestinoLongitude=XMLExtractString(NoXml1,"lng") END
ELSE IFInAndroidMode() =True
XmlDoc02 isXMLDocument XmlDoc02=XMLOpen(XmlResultado,fromString)
GloVoceEnderecoLongo=XmlDoc02.leg.start_address GloVoceEnderecoLongo=Capitalize(GloVoceEnderecoLongo)
GloDestinoEnderecoLongo=XmlDoc02.leg.end_address GloDestinoEnderecoLongo=Capitalize(GloDestinoEnderecoLongo)
GloTempoDestino=XmlDoc02.leg.duration.value GloTempoDestinoText=XmlDoc02.leg.duration.text GloTempoTaxi=GloTempoDestino
GloDistanciaDestino=XmlDoc02.leg.distance.value GloDistanciaDestinoText=XmlDoc02.leg.distance.text GloDistanciaTaxi=GloDistanciaDestino
IFXmlDoc02.leg.start_location.lat<0 GloVoceLatitude=XmlDoc02.leg.start_location.lat GloVoceLongitude=XmlDoc02.leg.start_location.lng END
IFXmlDoc02.leg.end_location.lat<0THEN GloDestinoLatitude=XmlDoc02.leg.end_location.lat GloDestinoLongitude=XmlDoc02.leg.end_location.lng END
END
END
ELSE GloDestinoEndereco="" GloDestinoEnderecoLongo=""
GloTempoDestino="" GloDistanciaDestino="" END
END
END
IFDebugSN="S"THEN Info(GloRotaEncode) Info("Origem:",GloVoceEnderecoLongo,GloVoceEndereco,"","Destino:",GloDestinoEnderecoLongo,GloDestinoEndereco,"","Tempo: "+GloTempoDestino,"Distancia: "+GloDistanciaDestino,"","Latitude Origem: "+GloVoceLatitude,"Longitute Origem: "+GloVoceLongitude,"","Latitude Destino: "+GloDestinoLatitude,"Longitude Destino: "+GloDestinoLongitude) END
IFQtdeOccurrence(GloVoceEnderecoLongo," - ") =1 GloVoceEndereco="" GloVoceNumero="" GloVoceEnderecoLongo="ERRO" GloVoceLatitude=0 GloVoceLongitude=0 END
IFQtdeOccurrence(GloDestinoEnderecoLongo," - ") =1 GloDestinoEndereco="" GloDestinoNumero="" GloDestinoEnderecoLongo="ERRO" END IFDebugSN="S" IFGloVoceEnderecoLongo="ERRO"ORGloDestinoEnderecoLongo="ERRO" Info("Endereço inválido") END END
RESULT(GloVoceEnderecoLongo) > |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 19 novembre 2014 - 11:58 |
ProcedureWS_Rota_DecodePoints(encoded isstring)
poly isarray ofLatLng
IFLength(encoded) >=6THEN
b,Shift,Tempresult isint=0 Index,nLen isint=0 Lat,Lng isreal
nLen=Length(encoded)
WHILE(Index<nLen)
LOOP
Index++ b=Asc(encoded[[Index]]) -63 Tempresult=BinaryOR(Tempresult,bitLeftShift(BinaryAND(b,0x1f),Shift)) Shift=Shift+5
DO WHILE(b>=0x20)
dlat isint
IFBinaryAND(Tempresult,1) <>0THEN
dlat=BinaryNOT(bitRightShift(Tempresult,1))
ELSE
dlat=bitRightShift(Tempresult,1)
END
Lat+=dlat Shift=0 Tempresult=0
LOOP
Index++ b=Asc(encoded[[Index]]) -63 Tempresult=BinaryOR(Tempresult,bitLeftShift(BinaryAND(b,0x1f),Shift)) Shift+=5;
DOWHILE(b>=0x20)
Dlng isint
IFBinaryAND(Tempresult,1) <>0THEN
Dlng=BinaryNOT(bitRightShift(Tempresult,1)) ELSE
Dlng=bitRightShift(Tempresult,1)
END
Lng+=Dlng; Shift=0 Tempresult=0
point is LatLng point.Latitude=Lat/100000 point.Longitude=Lng/100000 ArrayAdd(poly,point)
END
END
RESULTpoly
> |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 19 novembre 2014 - 11:59 |
ProcedureWS_Rota_DistanciaEntrePontos(x1 isreal,x2 isreal,y1 isreal,y2 isreal)
Dist isreal=0
IFx1<>""ANDx2<>""ANDy1<>""ANDy2<>""THEN
Dist=Root(Power(x1-x2,2) +Power(y1-y2,2) )
ELSE
Info("Falta parametros para calcular a distancia da reta entre 2 pontos")
END
RESULT(Dist) > |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 19 novembre 2014 - 11:59 |
ProcedureWS_Rota_Pitagoras(pA isreal,pB isreal,pC isreal)
ABC isreal=0
IFpA=""ANDpB<>""ANDpC<>""THEN
pA=Root(Power(pB,2) +Power(pC,2))
ABC=pA
ELSE IFpA<>""ANDpB=""ANDpC<>""THEN
pB=Root(Power(pA,2) -Power(pC,2))
ABC=pB
ELSE IFpA<>""ANDpB<>""ANDpC=""THEN
pC=Root(Power(pA,2) -Power(pB,2))
ABC=pC
END
RESULT(ABC) > |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 19 novembre 2014 - 11:59 |
ProcedureWS_Rota_PlotarPontos(GoogleMapsPoint isstring,distancia isint)
ok isboolean=False
IFLength(GoogleMapsPoint) >6
gloDesenhaItinerario=True
x isint=1
nInicial isint=0 arryPoints isarray ofLatLng
pointA is LatLng pointB is LatLng
arryPoints=WS_Rota_DecodePoints(GoogleMapsPoint)
WHILE(x<ArrayCount(arryPoints))
pointA=arryPoints[x] pointB=arryPoints[x+1] nomeMaker++ MarkerPonto..Position.Latitude=pointA.Latitude MarkerPonto..Position.Longitude=pointA.Longitude MarkerPonto..Image=WIN_Taxi62.IMG_Ponto MarkerPonto..Name="Itinerary"+nomeMaker MarkerPonto..Description="Itinerary"+nomeMaker MapAddMarker(WIN_Taxi62.ControleMapa,MarkerPonto)
WS_Rota_PlotarXLinhas(pointA,pointB,distancia)
x++
END
MarkerPonto..Position.Latitude=pointB.Latitude MarkerPonto..Position.Longitude=pointB.Longitude MarkerPonto..Image=WIN_Taxi62.IMG_Ponto MarkerPonto..Name="Itinerary"+x MarkerPonto..Description="Itinerary"+x MapAddMarker(WIN_Taxi62.ControleMapa,MarkerPonto)
gloDesenhaItinerario=False
IFpointB.Latitude<>""ANDpointB.Longitude<>""THEN ok=True ELSE ok=False END
END
RESULT(ok) > |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 19 novembre 2014 - 12:00 |
ProcedureWS_Rota_PlotarXLinhas(pointA is LatLng,pointB is LatLng,distancia isint)
IFpointA.Latitude<>""ANDpointB.Latitude<>""ANDpointA.Longitude<>""ANDpointB.Longitude<>""
CountPoints isint
metrosEntrePontos isint=10
IFdistancia>=20000THEN metrosEntrePontos=50 ELSEIFdistancia>=15000THEN metrosEntrePontos=40 ELSEIFdistancia>=10000THEN metrosEntrePontos=30 ELSEIFdistancia>=5000THEN metrosEntrePontos=20 END
c1 isreal=pointA.Latitude-pointB.Latitude c2 isreal=pointA.Longitude-pointB.Longitude
CountPoints=Root(Power(c1,2) +Power(c2,2)) * (metrosDistancia/metrosEntrePontos)
IFCountPoints=1THENCountPoints=2 IFCountPoints>0THEN
c1=c1/CountPoints c2=c2/CountPoints
END
WHILE(CountPoints>1)
CountPoints pointA.Latitude-=c1 pointA.Longitude-=c2 nomeMaker++
MarkerPonto..Position.Latitude=pointA.Latitude MarkerPonto..Position.Longitude=pointA.Longitude MarkerPonto..Image=WIN_Taxi62.IMG_Ponto MarkerPonto..Name="Itinerary"+nomeMaker MarkerPonto..Description="Itinerary"+nomeMaker MapAddMarker(WIN_Taxi62.ControleMapa,MarkerPonto)
END
END > |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 19 novembre 2014 - 12:06 |
ProcedureWS_ExtrairEndereco(endereco)
IFGloDebugSN="S"THEN NextTitle("Extrair Endereço") Info("WS_ExtrairEndereco",endereco) END
sRua,sNumero,sBairro,sCidade,sEstado,sPais,sCep isstring=""
IFendereco<>""
endereco=Replace(endereco,"State Of ","",IgnoreCase)
arrSplitArray isarray of strings StringToArray(endereco,arrSplitArray," - ")
IFArrayCount(arrSplitArray) =3
arrSplitRuaNumeroArray isarray of strings StringToArray(arrSplitArray[1],arrSplitRuaNumeroArray,",")
IFArrayCount(arrSplitRuaNumeroArray) =1
sRua=arrSplitRuaNumeroArray[1];
sNumero="0";
ELSE IFArrayCount(arrSplitRuaNumeroArray) =2
sRua=arrSplitRuaNumeroArray[1];
IFPositionOccurrence(arrSplitRuaNumeroArray[2],"-",firstRank) >0THEN
arrSplitNumeroArray isarray of strings StringToArray(arrSplitRuaNumeroArray[2],arrSplitNumeroArray,"-")
WHEN EXCEPTION IN Media isint= (Val(arrSplitNumeroArray[1]) +Val(arrSplitNumeroArray[2])) /2 DO sNumero=0 ELSE sNumero=Media END
ELSE
sNumero=arrSplitRuaNumeroArray[2];
END
END
arrSplitBairroCidadeArray isarray of strings StringToArray(arrSplitArray[2],arrSplitBairroCidadeArray,",")
IFArrayCount(arrSplitBairroCidadeArray) =2
sBairro=arrSplitBairroCidadeArray[1]; sCidade=arrSplitBairroCidadeArray[2];
ELSE IF(ArrayCount(arrSplitBairroCidadeArray) =3)
sBairro=arrSplitBairroCidadeArray[1]; sCidade=arrSplitBairroCidadeArray[3];
ELSE
sBairro=""; sCidade="";
END
arrSplitEstadoCepPaisArray isarray of strings StringToArray(arrSplitArray[3],arrSplitEstadoCepPaisArray,",")
IFArrayCount(arrSplitEstadoCepPaisArray) =2
sEstado=arrSplitEstadoCepPaisArray[1]; sPais=arrSplitEstadoCepPaisArray[2]; sCep=""
ELSE IFArrayCount(arrSplitEstadoCepPaisArray)=3
sEstado=arrSplitEstadoCepPaisArray[1]; sCep=arrSplitEstadoCepPaisArray[2]; sPais=arrSplitEstadoCepPaisArray[3]; ELSE
sEstado="" sCep="" sPais=""
END ELSE IFArrayCount(arrSplitArray) =2
arrSplitRuaCidadeArray isarray of strings StringToArray(arrSplitArray[1],arrSplitRuaCidadeArray,",")
sNumero="0"; IFArrayCount(arrSplitRuaCidadeArray) =1
sRua=arrSplitRuaCidadeArray[1];
ELSE IFArrayCount(arrSplitRuaCidadeArray) =2
sRua=arrSplitRuaCidadeArray[1]; sCidade=arrSplitRuaCidadeArray[2];
ELSE IFArrayCount(arrSplitRuaCidadeArray) =3
sRua=arrSplitRuaCidadeArray[1];
IFPositionOccurrence(arrSplitRuaCidadeArray[2],"-",firstRank) >0THEN
arrSplitNumeroArray isarray of strings StringToArray(arrSplitRuaCidadeArray[2],arrSplitNumeroArray,"-")
WHEN EXCEPTION IN Media isint= (Val(arrSplitNumeroArray[1]) +Val(arrSplitNumeroArray[2])) /2 DO sNumero=0 ELSE sNumero=Media END
ELSE
sNumero=arrSplitRuaCidadeArray[2];
END
sCidade=arrSplitRuaCidadeArray[3]; END
arrSplitEstadoCepPaisArray isarray of strings StringToArray(arrSplitArray[2],arrSplitEstadoCepPaisArray,",") IFArrayCount(arrSplitEstadoCepPaisArray) =2
sEstado=arrSplitEstadoCepPaisArray[1]; sPais=arrSplitEstadoCepPaisArray[2]; sCep=""
ELSE IFArrayCount(arrSplitEstadoCepPaisArray)=3
sEstado=arrSplitEstadoCepPaisArray[1]; sCep=arrSplitEstadoCepPaisArray[2]; sPais=arrSplitEstadoCepPaisArray[3]; ELSE
sEstado="" sCep="" sPais=""
END
END
sEstado=Capitalize(Clip(sEstado)) IFsEstado<>""
IFsEstado="Acre"THEN sEstado="AC" ELSE IFsEstado="Alagoas"THEN sEstado="AL" ELSE IFsEstado="Amazonas"THEN sEstado="AM" ELSE IFsEstado="Amapa"THEN sEstado="AP" ELSE IFsEstado="Bahia"THEN sEstado="BA" ELSE IFsEstado="Ceara"THEN sEstado="CE" ELSE IFsEstado="Distrito Federal"THEN sEstado="DF" ELSE IFsEstado="Espirito Santo"THEN sEstado="ES" ELSE IFsEstado="Goias"THEN sEstado="GO" ELSE IFsEstado="Maranhao"THEN sEstado="MA" ELSE IFsEstado="Minas Gerais"THEN sEstado="MG" ELSE IFsEstado="Mato Grosso do Sul"THEN sEstado="MS" ELSE IFsEstado="Mato Grosso"THEN sEstado="MT" ELSE IFsEstado="Parana"THEN sEstado="PR" ELSE IFsEstado="Para"THEN sEstado="PA" ELSE IFsEstado="Paraiba"THEN sEstado="PB" ELSE IFsEstado="Pernambuco"THEN sEstado="PE" ELSE IFsEstado="Piaui"THEN sEstado="PI" ELSE IFsEstado="Rio de Janeiro"THEN sEstado="RJ" ELSE IFsEstado="Rio Grande DO Norte"THEN sEstado="RN" ELSE IFsEstado="Rondonia"THEN sEstado="RO" ELSE IFsEstado="Roraima"THEN sEstado="RR" ELSE IFsEstado="Rio Grande DO Sul"THEN sEstado="RS" ELSE IFsEstado="Santa Catarina"THEN sEstado="SC" ELSE IFsEstado="Sergipe"THEN sEstado="SE" ELSE IFsEstado="Sao Paulo"THEN sEstado="SP" ELSE IFsEstado="Tocantins"THEN sEstado="TO" END
END
END arrResult isarray of strings
Add(arrResult,Capitalize(Clip(sRua))) Add(arrResult,Clip(sNumero)) Add(arrResult,Capitalize(Clip(sBairro))) Add(arrResult,Capitalize(Clip(sCidade))) Add(arrResult,Upper(Clip(sEstado))) Add(arrResult,Clip(sCep)) Add(arrResult,Capitalize(Clip(sPais)))
IFGloDebugSN="S"THEN NextTitle("Extrair Endereço") Info(arrResult[1],arrResult[2],arrResult[3],arrResult[4],arrResult[5],arrResult[6],arrResult[7]) END
RESULTarrResult > |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 19 novembre 2014 - 12:07 |
ProcedureWS_CEP_EnderecoDasCoordenadas(LOCALpLatitude isstring,LOCALpLongitude isstring,LOCALDebugSN)
IFGloDebugSN="S"THEN Info("WS_CEP_EnderecoDasCoordenadas") DebugSN="S" END
NextTitle("Atenção")
ok isboolean=False GloEnderecoOK=False
Endereco,RetJson isstring="" IFpLatitude<>0ANDpLongitude<>0ANDpLatitude<>NullANDpLongitude<>NullTHEN
Url isstring="http://maps.googleapis.com/maps/api/geocode/json?latlng="+pLatitude+","+pLongitude+"&sensor=true"
IFDebugSN="S" Info("01",Url) END
HTTPTimeOut(GloHTTPTimeOut)
ok=HTTPRequest(Url)
IFok=TrueTHEN
ChangeCharset(charsetOccidental)
RetJson=WS_Android_IOS_HTTPGetResult() IFLength(RetJson) =0THEN
ok=False ELSE
IFDebugSN="S" Info(Url,RetJson) END
TagEnd isstring="""formatted_address"" :" i isint=PositionOccurrence(RetJson,TagEnd,firstRank,IgnoreCase) +Length(TagEnd) Endereco=""
IFi>0THEN Endereco=ExtractString(RetJson[[i TO]],2,"""") GloEnderecoOK=True
END
IFEndereco=""ORRetJson="ERRO"THEN
GloEnderecoOK=False Url="http://maps.googleapis.com/maps/api/geocode/xml?latlng="+pLatitude+","+pLongitude+"&sensor=true"
IFDebugSN="S" Info("02",Url) END
HTTPTimeOut(GloHTTPTimeOut)
ok=HTTPRequest(Url) IFok=TrueTHEN
RetXml isstring=WS_Android_IOS_HTTPGetResult()
IFLength(RetXml) =0THEN
ok=False ELSE
IFDebugSN="S" Info("Xml:",RetXml) END
IFPositionOccurrence(RetXml,"<formatted_address>",firstRank) >0THEN
nPosicaoInicial isint=PositionOccurrence(RetXml,"<formatted_address>",firstRank) +Length("<formatted_address>") nPosicaoFinal isint=PositionOccurrence(RetXml,"</formatted_address>",firstRank) +Length("</formatted_address>") nPosicaoFinal=nPosicaoFinal-nPosicaoInicial Endereco=Middle(RetXml,nPosicaoInicial,nPosicaoFinal) GloEnderecoOK=True
END END END END END END
IFok=FalseTHEN Popup(GloMsgSemInternet,"L") END
Endereco=WS_RemoveAcentos(Endereco)
END
RESULT(Endereco) > |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 19 novembre 2014 - 12:09 |
<?xml version="1.0"encoding="UTF-8"?> <DirectionsResponse> <status>OK</status> <route> <summary>Av. Victor Ferreira do Amaral</summary> <leg> <step> <travel_mode>DRIVING</travel_mode> <start_location> <lat>-25.4189503</lat> <lng>-49.2445516</lng> </start_location> <end_location> <lat>-25.4189929</lat> <lng>-49.2440539</lng> </end_location> <polyline> <points>lsczClaqkHFcB</points> </polyline> <duration> <value>6</value> <text>1 min</text> </duration> <html_instructions>Siga na direção <b>leste</b> na <b>R. Dr. Goulin</b> em direção à <b>Rua Flávio Dallegrave</b></html_instructions> <distance> <value>50</value> <text>50 m</text> </distance> </step> <step> <travel_mode>DRIVING</travel_mode> <start_location> <lat>-25.4189929</lat> <lng>-49.2440539</lng> </start_location> <end_location> <lat>-25.4177243</lat> <lng>-49.2437741</lng> </end_location> <polyline> <points>tsczCh~pkHUGa@Ka@G[Eq@IuAK</points> </polyline> <duration> <value>38</value> <text>1 min</text> </duration> <html_instructions>Vire à <b>esquerda</b> na <b>Rua Flávio Dallegrave</b></html_instructions> <distance> <value>144</value> <text>0,1 km</text> </distance> <maneuver>turn-left</maneuver> </step> <step> <travel_mode>DRIVING</travel_mode> <start_location> <lat>-25.4177243</lat> <lng>-49.2437741</lng> </start_location> <end_location> <lat>-25.4179433</lat> <lng>-49.2411403</lng> </end_location> <polyline> <points>vkczCp|pkHD_@Bu@@S@U@e@@K@o@@UDy@@a@HsB@a@@c@</points> </polyline> <duration> <value>38</value> <text>1 min</text> </duration> <html_instructions>Pegue a 1ª <b>à direita</b> para <b>R. Augusto Stresser</b></html_instructions> <distance> <value>266</value> <text>0,3 km</text> </distance> </step> <step> <travel_mode>DRIVING</travel_mode> <start_location> <lat>-25.4179433</lat> <lng>-49.2411403</lng> </start_location> <end_location> <lat>-25.4280589</lat> <lng>-49.2415964</lng> </end_location> <polyline> <points>bmczCblpkHnAq@RKb@UHEr@_@jAm@`Ag@`@QPIf@QJEHAJAHAPA^@NBPD@@b@VvCrBZX`D|Bf@^ZV`Av@TNvA|@h@VVJXHXDfANV@T?T?VCTC`@Eb@IfAQfAS^M|Bm@ZKb@SXK@AJENIj@U</points> </polyline> <duration> <value>91</value> <text>2 minutos</text> </duration> <html_instructions>Vire à <b>direita</b> na <b>Av. Nossa Senhora da Luz</b></html_instructions> <distance> <value>1259</value> <text>1,3 km</text> </distance> <maneuver>turn-right</maneuver> </step> <step> <travel_mode>DRIVING</travel_mode> <start_location> <lat>-25.4280589</lat> <lng>-49.2415964</lng> </start_location> <end_location> <lat>-25.4282871</lat> <lng>-49.2414666</lng> </end_location> <polyline> <points>jlezC~npkHl@Y</points> </polyline> <duration> <value>2</value> <text>1 min</text> </duration> <html_instructions>Continue para <b>Av. Mal. Humberto de Alencar Castelo Branco</b></html_instructions> <distance> <value>29</value> <text>29 m</text> </distance> </step> <step> <travel_mode>DRIVING</travel_mode> <start_location> <lat>-25.4282871</lat> <lng>-49.2414666</lng> </start_location> <end_location> <lat>-25.4276407</lat> <lng>-49.2405798</lng> </end_location> <polyline> <points>xmezCdnpkHJSBGBG@C@E?C?A?C?CAECCWGWEKCKEIGIEACEEGGGGGKKOKO</points> </polyline> <duration> <value>20</value> <text>1 min</text> </duration> <html_instructions>Curva acentuada à <b>esquerda</b> na rampa de acesso a <b>R. Papa Rafael</b></html_instructions> <distance> <value>142</value> <text>0,1 km</text> </distance> </step> <step> <travel_mode>DRIVING</travel_mode> <start_location> <lat>-25.4276407</lat> <lng>-49.2405798</lng> </start_location> <end_location> <lat>-25.4273992</lat> <lng>-49.2394639</lng> </end_location> <polyline> <points>viezCrhpkHEIEKMg@I_@G]CSAQ?Y@c@</points> </polyline> <duration> <value>8</value> <text>1 min</text> </duration> <html_instructions>Continue para <b>R. Papa Rafael</b></html_instructions> <distance> <value>117</value> <text>0,1 km</text> </distance> </step> <step> <travel_mode>DRIVING</travel_mode> <start_location> <lat>-25.4273992</lat> <lng>-49.2394639</lng> </start_location> <end_location> <lat>-25.4300114</lat> <lng>-49.2153913</lng> </end_location> <polyline> <points>fhezCrapkHNsCJqC?KZ_GF_AN}CP_DN}CHiABo@Da@@MZyE@[VyDH_BJ_BFoAFkADkA@_@BY@[NcCFiADo@Do@ZaHR}DV{DBc@TcEFwAFqBBq@Do@Bi@B_@f@uJP_DJkBHeBNoCNgC</points> </polyline> <duration> <value>155</value> <text>3 minutos</text> </duration> <html_instructions>Continue para <b>Av. Victor Ferreira do Amaral</b></html_instructions> <distance> <value>2435</value> <text>2,4 km</text> </distance> </step> <step> <travel_mode>DRIVING</travel_mode> <start_location> <lat>-25.4300114</lat> <lng>-49.2153913</lng> </start_location> <end_location> <lat>-25.4363978</lat> <lng>-49.2186964</lng> </end_location> <polyline> <points>pxezCdkkkHlBp@`A\hA`@hAd@`@P^N`A`@h@Rl@Vn@Xp@Xr@Zn@Xn@Xp@Zn@XbBt@`Bt@l@Xl@Zp@Vp@X</points> </polyline> <duration> <value>67</value> <text>1 min</text> </duration> <html_instructions>Vire à <b>direita</b> na <b>R. Prof. Nivaldo Braga</b></html_instructions> <distance> <value>784</value> <text>0,8 km</text> </distance> <maneuver>turn-right</maneuver> </step> <step> <travel_mode>DRIVING</travel_mode> <start_location> <lat>-25.4363978</lat> <lng>-49.2186964</lng> </start_location> <end_location> <lat>-25.4404691</lat> <lng>-49.2094845</lng> </end_location> <polyline> <points>n`gzCz_lkHdAaDbAaDd@mAd@mA`@sAb@sA`@mA`@mAd@oAd@oAjCcIfAaDfAaDdAaD^eA</points> </polyline> <duration> <value>177</value> <text>3 minutos</text> </duration> <html_instructions>Vire à <b>esquerda</b> na <b>R. Clávio Molinari</b><div style="font-size:0.9em">O destino estará à esquerda</div></html_instructions> <distance> <value>1030</value> <text>1,0 km</text> </distance> <maneuver>turn-left</maneuver> </step> <duration> <value>602</value> <text>10 minutos</text> </duration> <distance> <value>6256</value> <text>6,3 km</text> </distance> <start_location> <lat>-25.4189503</lat> <lng>-49.2445516</lng> </start_location> <end_location> <lat>-25.4404691</lat> <lng>-49.2094845</lng> </end_location> <start_address>Rua Doutor Goulin, 1661 - Alto da Glória, Matriz, Curitiba - PR, 80040-280, República Federativa do Brasil</start_address> <end_address>Rua Clávio Molinari, 1029 - Capão da Imbuia, Cajuru, Curitiba - PR, 82810-210, República Federativa do Brasil</end_address> </leg> <copyrights>Dados cartográficos ©2014 Google</copyrights> <overview_polyline> <points>lsczClaqkHFcBUGcASmAOuAKD_@DiAB{@JkCN{EpCyAbFgCx@[TGTCp@?`@Hd@X|JjH|AnAlBlA`Ab@r@N~APj@?rBWnCe@|C{@zAm@tB_ATg@@OAI[Kc@IUMYWg@s@KUWgAKq@Ak@\uIdA}Rb@yHv@}Lr@}Nb@mHn@_NZ_F\{GJcDLyBnAgV^wGnDnArCfA`A`@hEfBlNjGzAt@bBp@hCcIjA{ChCcIjA_DrEeNlDiK</points> </overview_polyline> <bounds> <southwest> <lat>-25.4404691</lat> <lng>-49.2445516</lng> </southwest> <northeast> <lat>-25.4177243</lat> <lng>-49.2094845</lng> </northeast> </bounds> </route> </DirectionsResponse> > |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 19 novembre 2014 - 12:11 |
<overview_polyline> <points>lsczClaqkHFcBUGcASmAOuAKD_@DiAB{@JkCN{EpCyAbFgCx@[TGTCp@?`@Hd@X|JjH|AnAlBlA`Ab@r@N~APj@?rBWnCe@|C{@zAm@tB_ATg@@OAI[Kc@IUMYWg@s@KUWgAKq@Ak@\uIdA}Rb@yHv@}Lr@}Nb@mHn@_NZ_F\{GJcDLyBnAgV^wGnDnArCfA`A`@hEfBlNjGzAt@bBp@hCcIjA{ChCcIjA_DrEeNlDiK</points> </overview_polyline> > |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 19 novembre 2014 - 12:14 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 19 novembre 2014 - 12:15 |
> |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 19 novembre 2014 - 12:17 |
> |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 19 novembre 2014 - 12:20 |
OBS.:
>The image above was blue point plotted in the loop market, since the polyline function has not been done yet in Windev Mobile. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 22 novembre 2014 - 15:47 |
ProcedureWS_Android_IOS_HTTPGetResult()
bufResHTTP is Buffer sHTTPResult isstring
bufResHTTP=HTTPGetResult(httpResult)
IFIniOSMode() =TrueORIniOSSimulatorMode() =TrueORIniOSEmulatorMode() =True IFStringCount(bufResHTTP, “ISO-8859-1”,IgnoreCase) =0THEN sHTTPResult=UTF8ToString(bufResHTTP) ELSE sHTTPResult=AnsiToUnicode(bufResHTTP) END ELSE IFInAndroidMode() =TrueORInAndroidSimulatorMode() =TrueORInAndroidEmulatorMode() =True
sHTTPResult=bufResHTTP END
RESULTsHTTPResult > |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 22 novembre 2014 - 15:47 |
ProcedureWS_Android_iOs_ReadXml(XML_Retorno isstring,Xml_Atributo isstring)
arrXml_TagResult isarray of strings xposicaoinicial isint=0 Xposicaofinal isint=0 X isint=0 arrXml_Tag isarray of strings
Inicial isint=PositionOccurrence(XML_Retorno,"<"+Xml_Atributo,firstRank,FromBeginning) Final isint=PositionOccurrence(XML_Retorno,"</"+Xml_Atributo+">",lastRank,FromEnd) +Length("</"+Xml_Atributo+">") XML_Retorno=Middle(XML_Retorno,Inicial,Final-Inicial) XML_Retorno=Replace(XML_Retorno,Xml_Atributo,"NoXml") XML_Retorno="<Xml><Recorte>"+XML_Retorno+"</Recorte></Xml>"
nTotalxml isint=Length(XML_Retorno)
LOOP(nTotalxml)
X++ IFxposicaoinicial=0ANDXposicaofinal=0ANDXML_Retorno[[X]] ="<"THEN X++ IFXML_Retorno[[X]] ="/"THEN xposicaoinicial=X+1 END END IFxposicaoinicial>0ANDXML_Retorno[[X]] =">"THEN Xposicaofinal=X END IFXposicaofinal>0ANDxposicaoinicial>0THEN stag isstring=Middle(XML_Retorno,xposicaoinicial,Xposicaofinal-xposicaoinicial) IFstag="NoXml"THEN BREAK END Add(arrXml_Tag,stag) Xposicaofinal=0 xposicaoinicial=0 END
END
IFIniOSMode() =TrueTHEN
NoXml isstring i isint=1 NoXml=XMLExtractString(XML_Retorno,"NoXml",i)
FOR EACH stag OFarrXml_Tag
temp isstring=XMLExtractString(NoXml,stag) Add(arrXml_TagResult,temp)
END
ELSE IFInAndroidMode() =True
XmlDoc isXMLDocument XmlDoc=XMLOpen(XML_Retorno,fromString) NoXml isxmlNode
FOR EACH NoXml OF XmlDoc.Xml.Recorte on NoXml
FOR EACHsTag OFarrXml_Tag
Add(arrXml_TagResult,NoXml..ChildNode[sTag])
END
END
END
RESULTarrXml_TagResult > |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 20 juillet 2016 - 18:44 |
Prezados,
Como colocar eventos no controle de mapa no mobile:
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/> |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 24 août 2017 - 18:05 |
#import<UIKit/UIKit.h> #import<QuartzCore/QuartzCore.h> #import<MediaPlayer/MediaPlayer.h> #import<AVFoundation/AVFoundation.h>
void IOS(){}
#define FONT_SIZE14 #define LEFT_RIGHT_PADDING14 #define TOP_BOTTOM_PADDING10 #define BOTTOM_MARGIN200
#define BACKGROUND_COLOR darkGrayColor #define FADE_IN_DURATION0.4 #define FADE_OUT_DURATION0.3 #define DELAY2 #define MAX_CHAR_LINHA30 #define MAX_LENGTH_LABEL300 #define LEFT_RIGTH_BORDER_INTERN10 #define LEFT_RIGTH_BORDER_EXTERN20 #define TOP_BOTTOM_BORDER_INTERN10
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)([[[UIDevice currentDevice]systemVersion]compare:v options:NSNumericSearch] !=NSOrderedAscending) #define SYSTEM_VERSION_LESS_THAN(v)([[[UIDevice currentDevice]systemVersion]compare:v options:NSNumericSearch] ==NSOrderedAscending) #define iOS7_0@"7.0"
@interface WDToast:NSObject
@Property(nonatomic,strong)NSString*Message;
@Property(nonatomic)intDelai;
@Property(nonatomic,strong)UILabel*label; + (WDToast*)toastWithMessage:(NSString*)msg delay:(int)nDelai;
- (void)showOnView:(UIView*)mainView; @END
@implementation WDToast { CGRectrect; }
+ (WDToast*)toastWithMessage:(NSString*)msg delay:(int)nDelai; { WDToast*t= [[[WDToast alloc]init]autorelease]; t.message=msg; t.Delai=nDelai;
floatxLabel=0; float yLabel=0; float wScreen=0; floathScreen=0; floathLablel=0; float wLabel=0; unsigned long countLines=0;
CGSizesz= [UIScreen mainScreen].bounds.size; wScreen=sz.width; hScreen=sz.height; UIFont*font= [UIFont systemFontOfSize:FONT_SIZE];
IF(SYSTEM_VERSION_LESS_THAN(iOS7_0)) {
#pragma clang diagnosticPush #pragma clang diagnostic ignored"-Wdeprecated-declarations"
CGSizewithinSize=CGSizeMake(wScreen-LEFT_RIGTH_BORDER_EXTERN-LEFT_RIGTH_BORDER_INTERN,FLT_MAX); CGSizesize= [msg sizeWithFont:font constrainedToSize:withinSize lineBreakMode:NSLineBreakByWordWrapping];
wLabel=size.width+LEFT_RIGTH_BORDER_INTERN; hLablel=size.height+TOP_BOTTOM_BORDER_INTERN;
}
ELSE IF(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(iOS7_0))
{
CGSizesize2= [msg boundingRectWithSize:CGSizeMake(wScreen-LEFT_RIGTH_BORDER_EXTERN-LEFT_RIGTH_BORDER_INTERN,MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:font
}
context:nil].size; wLabel=size2.width+LEFT_RIGTH_BORDER_INTERN; hLablel=size2.height+TOP_BOTTOM_BORDER_INTERN;
}
ELSE
{
countLines= (([msgLength])/MAX_CHAR_LINHA)+1;
IF(countLines>1) {
wLabel=MAX_LENGTH_LABEL;
} ELSE {
wLabel= ([msgLength] *8) +FONT_SIZE;
}
};
countLines=30; xLabel= (wScreen/2) - (wLabel/2); yLabel= (hScreen/2);
CGRectrect=CGRectMake(xLabel,yLabel,wLabel,hLablel); t.label= [[[UILabel alloc]initWithFrame:rect]autorelease]; t.label.text=msg; t.label.textColor= [UIColor whiteColor]; t.label.font= [UIFont systemFontOfSize:FONT_SIZE]; t.label.textAlignment=NSTextAlignmentCenter; t.label.backgroundColor= [UIColor BACKGROUND_COLOR]; t.label.numberOfLines=countLines;
RETURNt;
}
- (void)showOnView:(UIView*)view { [self.label setAlpha:0]; [view addSubview:self.label];
[UIView animateWithDuration:FADE_IN_DURATION animations:^{ [self.label setAlpha:1]; }
completion:^(BOOL finished) { [UIView animateWithDuration:FADE_OUT_DURATION delay:self.Delai options:0 animations:^{ [self.label setAlpha:0]; } completion:^(BOOL finished) {} ]; }]; } @END
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/> |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 24 août 2017 - 18:05 |
void IOS_BloqueiaTela(BOOLbStatus) {
[[UIApplication sharedApplication]setIdleTimerDisabled:bStatus]; }
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/> |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 24 août 2017 - 18:05 |
void IOS_LerTexto(NSString*constsMsg) { AVSpeechUtterance*utterance= [AVSpeechUtterance speechUtteranceWithString:sMsg]; AVSpeechSynthesizer*synth= [[[AVSpeechSynthesizer alloc]init]autorelease]; [synth speakUtterance:utterance]; }
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/> |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 24 août 2017 - 18:06 |
void IOS_ToastAffiche(NSString*sMessage,void*pclView,intnDelai) { WDToast*pclToast= [WDToast toastWithMessage:sMessage delay:nDelai]; [pclToast showOnView:(UIView*)pclView]; }
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/> |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 24 août 2017 - 18:08 |
ProcedureWS_Rota_PlotarPontos(GoogleMapsPointis string,distanciais int)
okis boolean=False nomeMakeris int
IFLength(GoogleMapsPoint) >6
xis int=1
nInicialis int=0 arrayPointsis array ofLatLng
pointAisLatLng pointBisLatLng
arrayPoints=WS_Rota_DecodePoints(GoogleMapsPoint)
WHILE(x<ArrayCount(arrayPoints))
pointA=arrayPoints[x] pointB=arrayPoints[x+1] nomeMaker++ MarkerPonto..Position.Latitude=pointA.Latitude MarkerPonto..Position.Longitude=pointA.Longitude MarkerPonto..Image=WIN_Taxi62.IMG_Ponto MarkerPonto..Name="Itinerary"+nomeMaker MarkerPonto..Description="Itinerary"+nomeMaker MapAddMarker(WIN_Taxi62.ControleMapa,MarkerPonto)
WS_Rota_PlotarXLinhas(pointA,pointB,distancia)
x++
END
MarkerPonto..Position.Latitude=pointB.Latitude MarkerPonto..Position.Longitude=pointB.Longitude MarkerPonto..Image=WIN_Taxi62.IMG_Ponto MarkerPonto..Name="Itinerary"+x MarkerPonto..Description="Itinerary"+x MapAddMarker(WIN_Taxi62.ControleMapa,MarkerPonto)
IFpointB.Latitude<>""ANDpointB.Longitude<>""THEN ok=True ELSE ok=False END
END
RESULT(ok)
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/> |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 651 messages Popularité : +175 (223 votes) |
|
Posté le 24 août 2017 - 18:09 |
ProcedureWS_Rota_PlotarXLinhas(pointAisLatLng,pointBisLatLng,distanciais int)
IFpointA.Latitude<>""ANDpointB.Latitude<>""ANDpointA.Longitude<>""ANDpointB.Longitude<>""
CountPointsis int nomeMakeris int metrosEntrePontosis int=10
IFdistancia>=20000THEN metrosEntrePontos=50 ELSEIFdistancia>=15000THEN metrosEntrePontos=40 ELSEIFdistancia>=10000THEN metrosEntrePontos=30 ELSEIFdistancia>=5000THEN metrosEntrePontos=20 END
c1is real=pointA.Latitude-pointB.Latitude c2is real=pointA.Longitude-pointB.Longitude
CountPoints=Root(Power(c1,2) +Power(c2,2)) * (metrosDistancia/metrosEntrePontos)
IFCountPoints=1THENCountPoints=2 IFCountPoints>0THEN
c1=c1/CountPoints c2=c2/CountPoints
END
WHILE(CountPoints>1)
CountPoints pointA.Latitude-=c1 pointA.Longitude-=c2 nomeMaker++
MarkerPonto..Position.Latitude=pointA.Latitude MarkerPonto..Position.Longitude=pointA.Longitude MarkerPonto..Image=WIN_Taxi62.IMG_Ponto MarkerPonto..Name="Itinerary"+nomeMaker MarkerPonto..Description="Itinerary"+nomeMaker MapAddMarker(WIN_Taxi62.ControleMapa,MarkerPonto)
END
END
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/> |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|