2010-12-10 2 views
0

какой db foursquare используется?
Я не имею в виду: MySQL, Oracle или что-то еще, я имею в виду:
Где они получают место?
С Google Maps?Какой вид использования DB Foursquare?

+0

Вопросы о том, какие технологии использует конкретная компания в любой момент времени, слишком локализованы, если вы не хотите говорить о том, как реализовать подобную технологию в своем собственном приложении. – 2010-12-10 02:40:30

+0

Мне нужно реализовать аналогичную вещь в моем приложении. Что я могу сделать? – Fabian 2010-12-10 02:42:11

ответ

2

Из того, что я могу сказать, 4SQ использует Google Maps и Geolocation

Я не знаю, что вы используете для технологии, но я написал довольно сладкий «Lat/Lon» локатор, который работает с Карты Google и карты Bing. Он находится в VB.NET и выводит широту и долготу как JSON.

Imports System.Runtime.Serialization 
Imports System.Web 
Imports System.Net 
Imports System.Runtime.Serialization.Json 
Imports System.Web.Script.Serialization 

Namespace Utilities.Apis 
    Public NotInheritable Class Geolocation 
     ''# This is the object that we are going to store the latitude and 
     ''# longitude contained in the API response. 
     Private coordinates As Coordinates 
     Public Sub New() 
      coordinates = New Coordinates 
     End Sub 

     Private Const googleUrl As String = "http://maps.googleapis.com/maps/api/geocode/json?address={0}&sensor=false" 
     Private Const bingUrl As String = "http://dev.virtualearth.net/REST/v1/Locations?addressLine={0}&key={1}&CountryRegion={2}" 
     Private Const bingKey As String = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 

     Public Enum apiProvider 
      Google = 1 
      Bing = 2 
     End Enum 

     ''''# <summary> 
     ''''# Gets the Latitude and Longitude of an address using either Bing or Google Geolocation 
     ''''# </summary> 
     ''''# <param name="Provider">ENUM apiProvider [Bing] or [Google]</param> 
     ''''# <param name="Address">The address of the coordinates you'd like to locate</param> 
     ''''# <param name="countryCode">Bing doesn't play nice outside the US without this. use "CA" for Canada</param> 
     ''''# <returns>A JSON string using "Latitude" and "Longitude" from the Coordinates class</returns> 
     Public Function GetLatLon(ByVal Provider As Integer, 
            ByVal Address As String, 
            Optional ByVal CountryCode As String = "CA") As String 

      ''# If there happens to be some strange behavior with the placeholder, 
      ''# we want to ensure that the "demo" content is not submitted to the 
      ''# api. 
      If Address = "6789 university drive" Then 
       Return Nothing 
      End If 

      Address = HttpUtility.UrlEncode(Address) 

      Dim url As String 
      Dim responseType As Type 
      If Provider = apiProvider.Bing Then 
       url = String.Format(bingUrl, Address, bingKey, CountryCode) 
       responseType = GetType(BingResponse) 
      ElseIf Provider = apiProvider.Google Then 
       url = String.Format(googleUrl, Address) 
       responseType = GetType(GoogleResponse) 
      Else 
       ''# If for some reason, the apiResponse is NOT Google or Bing, 
       ''# then we want to return Google anyways. 
       url = String.Format(googleUrl, Address) 
      End If 

      ''# Initiate the Http Web Request to the respective provider 
      Dim request = DirectCast(HttpWebRequest.Create(url), HttpWebRequest) 

      ''# Deflate the compressed (gzip'd) response 
      request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate") 
      request.AutomaticDecompression = DecompressionMethods.GZip Or DecompressionMethods.Deflate 

      ''# Serialize the response into it's respective Data Contract 
      Dim serializer As New DataContractJsonSerializer(responseType) 

      ''# Because the JSON Response from Google and Bing are drastically 
      ''# different, we need to consume the response a little differently 
      ''# for each API. I'd like to figure out a way to shrink this a 
      ''# little more, but at the same time, it's working. So I'm going to 
      ''# leave it alone for now [Nov 28,2010] 


      ''# Here we're handling the Bing Provider 
      If Provider = apiProvider.Bing Then 
       Dim res = DirectCast(serializer.ReadObject(request.GetResponse().GetResponseStream()), BingResponse) 
       Dim resources As BingResponse.ResourceSet.Resource = res.resourceSets(0).resources(0) 
       Dim point = resources.point 
       With coordinates 
        .latitude = point.coordinates(0) 
        .longitude = point.coordinates(1) 
       End With 


       ''# Here we're handling the Google Provider 
      ElseIf Provider = apiProvider.Google Then 
       Dim res = DirectCast(serializer.ReadObject(request.GetResponse().GetResponseStream()), GoogleResponse) 
       Dim resources As GoogleResponse.Result = res.results(0) 
       Dim point = resources.geometry.location 
       With coordinates 
        .latitude = point.lat 
        .longitude = point.lng 
       End With 
      End If 

      ''# Serialize the coordinates and return the string 
      Dim jsonSerializer = New JavaScriptSerializer 
      Return jsonSerializer.Serialize(coordinates) 
     End Function 
    End Class 

    <DataContract()> 
    Public Class BingResponse 
     <DataMember()> 
     Public Property resourceSets() As ResourceSet() 
     <DataContract()> 
     Public Class ResourceSet 
      <DataMember()> 
      Public Property resources() As Resource() 
      <DataContract([Namespace]:="http://schemas.microsoft.com/search/local/ws/rest/v1", name:="Location")> 
      Public Class Resource 
       <DataMember()> 
       Public Property point() As m_Point 
       <DataContract()> 
       Public Class m_Point 
        <DataMember()> 
        Public Property coordinates() As String() 
       End Class 
      End Class 
     End Class 
    End Class 

    <DataContract()> 
    Public Class GoogleResponse 
     <DataMember()> 
     Public Property results() As Result() 
     <DataContract()> 
     Public Class Result 
      <DataMember()> 
      Public Property geometry As m_Geometry 
      <DataContract()> 
      Public Class m_Geometry 
       <DataMember()> 
       Public Property location As m_location 
       <DataContract()> 
       Public Class m_location 
        <DataMember()> 
        Public Property lat As String 
        <DataMember()> 
        Public Property lng As String 
       End Class 
      End Class 
     End Class 

    End Class 
End Namespace 

и вот как это легко назвать.

Geolocate.GetLatLon(Utilities.Apis.Geolocation.apiProvider.Google, "1234 Some Funky Street, Home Town, MI", "US") 

Таким образом, в конце концов, они используют комбинацию своей собственной Geolocating, а также информацию, которая «может» быть представлен на твиттере или на конечных пользователей мобильных устройств (iPhone, например, спрашивает, если вы хотите чтобы он мог отправлять информацию о местоположении).

0

Они полагаются на пользователей для ввода новых местоположений. Возможно, они посеяли его в какой-то момент с импортом.

Смежные вопросы