LiveCode & google maps...
Peter Brigham MD
pmbrig at gmail.com
Tue Feb 15 17:11:46 EST 2011
On Feb 15, 2011, at 4:27 PM, James Hurley wrote:
> Peter,
>
> Thanks. Very interesting.
>
> A couple of questions.
>
> Is "lineoffsets" a custom function or a typo?
>
> And what is the "sr" function?
>
> Thanks again,
>
> Jim Hurley
>
>
> On Feb 15, 2011, at 10:00 AM, use-livecode-request at lists.runrev.com
> wrote:
>
>> function getMileage
>> put "http://maps.googleapis.com/maps/api/directions/xml?" & \
>> "origin=<tOrig>&destination=<tDest>&sensor=false" into tURL
>> put fld "from" into tStart
>> put fld "to" into tEnd
>> replace "<tOrig>" with urlEncode(tStart) in tURL
>> replace "<tDest>" with urlEncode(tEnd) in tURL
>> put URL tURL into t
>> put lineoffsets("<distance>",t) into startSect
>> put item -1 of startSect into startSect
>> put lineoffsets("</distance>",t) into endSect
>> put item -1 of endSect into endSect
>> if startSect = 0 or endSect = 0 then
>> beep
>> exit to top
>> end if
>> put line startSect+1 to endSect-1 of t into tSect
>> put lineoffset("<text>",tSect) into dLine
>> if dLine = 0 then
>> beep
>> exit to top
>> end if
>> put sr(line startSect + dLine of t) into tMiles
>> -- <text>3.6 mi</text>
>> replace "<text>" with empty in tMiles
>> delete word -1 of tMiles
>> return tMiles
>> end getMileage
Ah, sorry, I forgot. A couple of other utility functions from my
personal library that I use constantly -- so much so that it didn't
register that they weren't LC-native. The offsets() function can be
expanded if desired to wordoffsets(), itemoffsets(), etc. Exercise
left to the reader, as they say (or email me off list if you need them
and you're too busy to do it yourself).
--------
function offsets str,ctr
-- returns a comma-delimited list of all the offsets of str in ctr
-- if none found, returns 0
put "" into mosList
put 0 into startPoint
repeat
put offset(str,ctr,startPoint) into os
if os = 0 then exit repeat
add os to startPoint
put startPoint & "," after mosList
end repeat
if char -1 of mosList = "," then delete last char of mosList
if mosList = "" then return "0"
return mosList
end offsets
-- To find the last of multiple matches for str in ctr, use
-- item -1 of lineoffsets(str,ctr)
-- (which is what is done above in the getMileage handler.)
function sr str
-- strips returns and other white space from str, fore & aft
return word 1 to (the number of words of str) of str
end sr
---------
-- Peter
Peter M. Brigham
pmbrig at gmail.com
http://home.comcast.net/~pmbrig
More information about the use-livecode
mailing list