geolocation wip
This commit is contained in:
97
PBMap.pb
97
PBMap.pb
@@ -278,6 +278,79 @@ Module PBMap
|
|||||||
|
|
||||||
IncludeFile "libcurl.pbi" ; https://github.com/deseven/pbsamples/tree/master/crossplatform/libcurl
|
IncludeFile "libcurl.pbi" ; https://github.com/deseven/pbsamples/tree/master/crossplatform/libcurl
|
||||||
|
|
||||||
|
Global *ReceiveHTTPToMemoryBuffer, ReceiveHTTPToMemoryBufferPtr.i, ReceivedData.s
|
||||||
|
|
||||||
|
ProcedureC ReceiveHTTPWriteToMemoryFunction(*ptr, Size.i, NMemB.i, *Stream)
|
||||||
|
Protected SizeProper.i = Size & 255
|
||||||
|
Protected NMemBProper.i = NMemB
|
||||||
|
If *ReceiveHTTPToMemoryBuffer = 0
|
||||||
|
*ReceiveHTTPToMemoryBuffer = AllocateMemory(SizeProper * NMemBProper)
|
||||||
|
If *ReceiveHTTPToMemoryBuffer = 0
|
||||||
|
Error("Curl : Problem allocating memory")
|
||||||
|
EndIf
|
||||||
|
Else
|
||||||
|
*ReceiveHTTPToMemoryBuffer = ReAllocateMemory(*ReceiveHTTPToMemoryBuffer, MemorySize(*ReceiveHTTPToMemoryBuffer) + SizeProper * NMemBProper)
|
||||||
|
If *ReceiveHTTPToMemoryBuffer = 0
|
||||||
|
Error("Curl : Problem reallocating memory")
|
||||||
|
EndIf
|
||||||
|
EndIf
|
||||||
|
CopyMemory(*ptr, *ReceiveHTTPToMemoryBuffer + ReceiveHTTPToMemoryBufferPtr, SizeProper * NMemBProper)
|
||||||
|
ReceiveHTTPToMemoryBufferPtr + SizeProper * NMemBProper
|
||||||
|
ProcedureReturn SizeProper * NMemBProper
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
|
Procedure.i CurlReceiveHTTPToMemory(URL$, ProxyURL$="", ProxyPort$="", ProxyUser$="", ProxyPassword$="")
|
||||||
|
Protected *Buffer, curl.i, Timeout.i, res.i
|
||||||
|
If Len(URL$)
|
||||||
|
curl = curl_easy_init()
|
||||||
|
If curl
|
||||||
|
Timeout = 3
|
||||||
|
curl_easy_setopt(curl, #CURLOPT_URL, str2curl(URL$))
|
||||||
|
curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYPEER, 0)
|
||||||
|
curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYHOST, 0)
|
||||||
|
curl_easy_setopt(curl, #CURLOPT_HEADER, 0)
|
||||||
|
curl_easy_setopt(curl, #CURLOPT_FOLLOWLOCATION, 1)
|
||||||
|
curl_easy_setopt(curl, #CURLOPT_TIMEOUT, Timeout)
|
||||||
|
If Len(ProxyURL$)
|
||||||
|
;curl_easy_setopt(curl, #CURLOPT_HTTPPROXYTUNNEL, #True)
|
||||||
|
If Len(ProxyPort$)
|
||||||
|
ProxyURL$ + ":" + ProxyPort$
|
||||||
|
EndIf
|
||||||
|
; Debug ProxyURL$
|
||||||
|
curl_easy_setopt(curl, #CURLOPT_PROXY, str2curl(ProxyURL$))
|
||||||
|
If Len(ProxyUser$)
|
||||||
|
If Len(ProxyPassword$)
|
||||||
|
ProxyUser$ + ":" + ProxyPassword$
|
||||||
|
EndIf
|
||||||
|
;Debug ProxyUser$
|
||||||
|
curl_easy_setopt(curl, #CURLOPT_PROXYUSERPWD, str2curl(ProxyUser$))
|
||||||
|
EndIf
|
||||||
|
EndIf
|
||||||
|
curl_easy_setopt(curl, #CURLOPT_WRITEFUNCTION, @ReceiveHTTPWriteToMemoryFunction())
|
||||||
|
res = curl_easy_perform(curl)
|
||||||
|
If res = #CURLE_OK
|
||||||
|
*Buffer = AllocateMemory(ReceiveHTTPToMemoryBufferPtr)
|
||||||
|
If *Buffer
|
||||||
|
CopyMemory(*ReceiveHTTPToMemoryBuffer, *Buffer, ReceiveHTTPToMemoryBufferPtr)
|
||||||
|
FreeMemory(*ReceiveHTTPToMemoryBuffer)
|
||||||
|
*ReceiveHTTPToMemoryBuffer = #Null
|
||||||
|
ReceiveHTTPToMemoryBufferPtr = 0
|
||||||
|
Else
|
||||||
|
MyDebug("Problem allocating buffer", 4)
|
||||||
|
EndIf
|
||||||
|
;curl_easy_cleanup(curl) ;Was its original place but moved below as it seems more logical to me.
|
||||||
|
Else
|
||||||
|
MyDebug("CURL problem", 4)
|
||||||
|
EndIf
|
||||||
|
curl_easy_cleanup(curl)
|
||||||
|
Else
|
||||||
|
MyDebug("Can't Init CURL", 4)
|
||||||
|
EndIf
|
||||||
|
EndIf
|
||||||
|
; Debug "Curl Buffer : " + Str(*Buffer)
|
||||||
|
ProcedureReturn *Buffer
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
;Curl write callback (needed for win32 dll)
|
;Curl write callback (needed for win32 dll)
|
||||||
ProcedureC ReceiveHTTPWriteToFileFunction(*ptr, Size.i, NMemB.i, FileHandle.i)
|
ProcedureC ReceiveHTTPWriteToFileFunction(*ptr, Size.i, NMemB.i, FileHandle.i)
|
||||||
ProcedureReturn WriteData(FileHandle, *ptr, Size * NMemB)
|
ProcedureReturn WriteData(FileHandle, *ptr, Size * NMemB)
|
||||||
@@ -299,7 +372,7 @@ Module PBMap
|
|||||||
curl_easy_setopt(curl, #CURLOPT_HEADER, 0)
|
curl_easy_setopt(curl, #CURLOPT_HEADER, 0)
|
||||||
curl_easy_setopt(curl, #CURLOPT_FOLLOWLOCATION, 1)
|
curl_easy_setopt(curl, #CURLOPT_FOLLOWLOCATION, 1)
|
||||||
curl_easy_setopt(curl, #CURLOPT_TIMEOUT, Timeout)
|
curl_easy_setopt(curl, #CURLOPT_TIMEOUT, Timeout)
|
||||||
curl_easy_setopt(curl, #CURLOPT_VERBOSE, 1)
|
curl_easy_setopt(curl, #CURLOPT_VERBOSE, 0)
|
||||||
;curl_easy_setopt(curl, #CURLOPT_CONNECTTIMEOUT, 60)
|
;curl_easy_setopt(curl, #CURLOPT_CONNECTTIMEOUT, 60)
|
||||||
If Len(ProxyURL$)
|
If Len(ProxyURL$)
|
||||||
;curl_easy_setopt(curl, #CURLOPT_HTTPPROXYTUNNEL, #True)
|
;curl_easy_setopt(curl, #CURLOPT_HTTPPROXYTUNNEL, #True)
|
||||||
@@ -331,6 +404,7 @@ Module PBMap
|
|||||||
EndIf
|
EndIf
|
||||||
ProcedureReturn #False
|
ProcedureReturn #False
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
;- ***
|
;- ***
|
||||||
|
|
||||||
Procedure TechnicalImagesCreation()
|
Procedure TechnicalImagesCreation()
|
||||||
@@ -1944,6 +2018,24 @@ Module PBMap
|
|||||||
curl_global_init(#CURL_GLOBAL_WIN32)
|
curl_global_init(#CURL_GLOBAL_WIN32)
|
||||||
TechnicalImagesCreation()
|
TechnicalImagesCreation()
|
||||||
SetLocation(0, 0)
|
SetLocation(0, 0)
|
||||||
|
|
||||||
|
Protected Name.s = PBMap\Options\HDDCachePath + "JSon.json"
|
||||||
|
|
||||||
|
; Protected *Buffer = CurlReceiveHTTPToMemory("http://nominatim.openstreetmap.org/search/Unter%20den%20Linden%201%20Berlin?format=json&addressdetails=1&limit=1&polygon_svg=1", PBMap\Options\ProxyURL, PBMap\Options\ProxyPort, PBMap\Options\ProxyUser, PBMap\Options\ProxyPassword)
|
||||||
|
; Debug *Buffer
|
||||||
|
; Debug MemorySize(*Buffer)
|
||||||
|
; Protected JSon.s = PeekS(*Buffer, MemorySize(*Buffer), #PB_UTF8)
|
||||||
|
; If *Buffer <> 0
|
||||||
|
; Debug JSon
|
||||||
|
; EndIf
|
||||||
|
Protected i
|
||||||
|
;Protected Size.i = CurlReceiveHTTPToFile("http://nominatim.openstreetmap.org/search/Unter%20den%20Linden%201%20Berlin?format=json&addressdetails=1&limit=1&polygon_svg=1", Name, PBMap\Options\ProxyURL, PBMap\Options\ProxyPort, PBMap\Options\ProxyUser, PBMap\Options\ProxyPassword)
|
||||||
|
LoadJSON(0, Name)
|
||||||
|
For i = 0 To JSONArraySize(JSONValue(0)) - 1
|
||||||
|
Debug GetJSONElement(JSONValue(0), i)
|
||||||
|
Next i
|
||||||
|
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
EndModule
|
EndModule
|
||||||
@@ -2142,7 +2234,8 @@ CompilerIf #PB_Compiler_IsMainFile
|
|||||||
CompilerEndIf
|
CompilerEndIf
|
||||||
|
|
||||||
; IDE Options = PureBasic 5.50 (Windows - x64)
|
; IDE Options = PureBasic 5.50 (Windows - x64)
|
||||||
; CursorPosition = 10
|
; CursorPosition = 2030
|
||||||
|
; FirstLine = 2009
|
||||||
; Folding = ---------------
|
; Folding = ---------------
|
||||||
; EnableThread
|
; EnableThread
|
||||||
; EnableXP
|
; EnableXP
|
Reference in New Issue
Block a user