2011-01-28 39 views
8

के साथ काम करना मेरी अज्ञानता के लिए मुझे क्षमा करें, लेकिन खोज के कई घंटों के बाद, मुझे बहुत भाग्य है।Google स्थान API

वैसे भी, मैं एक छोटे से डेस्कटॉप अनुप्रयोग है कि एक उपयोगकर्ता कोई पता दर्ज है और फिर अपने अनुमानित स्थान जीपीएस में लौट आए निर्देशांक है करने की अनुमति देगा लिखने के लिए प्रयास कर रहा हूँ।

http://maps.googleapis.com/maps/api/geocode/output?parameters

जब मैं बुनियादी C शार्प अनुप्रयोगों लेखन से परिचित हूँ, मैं सच में पता नहीं है, जहां के लिए है: मैं क्या बता सकते हैं, गूगल ने एक जियोकोडिंग एपीआई [1] कि निम्नलिखित रूप में अनुरोध की अनुमति देता है प्रदान करता है जब इस एपीआई के साथ इंटरफेसिंग की बात आती है तो शुरू करें। कोई भी मदद जो आप लोग प्रदान कर सकते हैं उसकी सराहना की जाएगी। उत्पादन, सेंसर और पता:

उत्तर

2

जियोकोड एपीआई बल्कि सरल है, एपीआई से अक्षांश/देशांतर आप केवल 3 पैरामीटर की जरूरत है पाने के लिए।

उत्पादन उत्पादन प्रारूप आप चाहते हैं, JSON या XML (IIRC)

सेंसर इस तरह के एक जीपीएस चिप के रूप में एक बूलियन यह दर्शाता है या मौसम नहीं मूल्य एक सेंसर से आता है होना चाहिए।

पता होना चाहिए पता (मत भूलना एनकोड यह यूआरएल के लिए) आप को जियोकोड करना चाहते हैं।

यह एक उदाहरण है, जहां मैं अपने कार्यालय का पता जियोकोड है, और जवाब में JSON मिलती है: http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=1+Maritime+Plaza+San+Francisco+CA

आपको लगता है कि पर नेविगेट करते हैं आप की तरह कुछ देखना चाहिए:

{ 
    "status": "OK", 
    "results": [ { 
    "types": [ "street_address" ], 
    "formatted_address": "1 Maritime Plaza, San Francisco, CA 94111, USA", 
    "address_components": [ { 
     "long_name": "1", 
     "short_name": "1", 
     "types": [ "street_number" ] 
    }, { 
     "long_name": "Maritime Plaza", 
     "short_name": "Maritime Plaza", 
     "types": [ "route" ] 
    }, { 
     "long_name": "San Francisco", 
     "short_name": "San Francisco", 
     "types": [ "locality", "political" ] 
    }, { 
     "long_name": "San Francisco", 
     "short_name": "San Francisco", 
     "types": [ "administrative_area_level_3", "political" ] 
    }, { 
     "long_name": "San Francisco", 
     "short_name": "San Francisco", 
     "types": [ "administrative_area_level_2", "political" ] 
    }, { 
     "long_name": "California", 
     "short_name": "CA", 
     "types": [ "administrative_area_level_1", "political" ] 
    }, { 
     "long_name": "United States", 
     "short_name": "US", 
     "types": [ "country", "political" ] 
    }, { 
     "long_name": "94111", 
     "short_name": "94111", 
     "types": [ "postal_code" ] 
    } ], 
    "geometry": { 
     "location": { 
     "lat": 37.7953907, 
     "lng": -122.3991803 
     }, 
     "location_type": "ROOFTOP", 
     "viewport": { 
     "southwest": { 
      "lat": 37.7922431, 
      "lng": -122.4023279 
     }, 
     "northeast": { 
      "lat": 37.7985383, 
      "lng": -122.3960327 
     } 
     } 
    } 
    } ] 
} 

आप लेते हैं लैट/लॉन प्रदान किया गया और इसे map पर रखें, आप मेरे कार्यालय भवन पर एक सूचक देखते हैं।

+0

मैं इस बाहर की कोशिश करने के लिए सुनिश्चित हो जाएगा। मैं बस इस दौरान धन्यवाद कहना चाहता था, मैं वास्तव में इसकी सराहना करता हूं। –

+0

यदि आप वैकल्पिक क्षेत्र पैरामीटर जोड़ते हैं, तो यह वहां एक स्थान वापस करने के लिए कठिन प्रयास करेगा। –

0

यदि आप इसे सी # में कर रहे हैं, तो आप HttpWebRequest और HttpWebResponse कक्षाओं का उपयोग करना चाहेंगे। आप पैरामीटर यूआरएल (गूगल एपीआई कॉल) को Create() विधि के तर्क के रूप में पास कर सकते हैं। मैं डेटा को एक्सएमएल डेटा के रूप में वापस करने का अनुरोध करने का सुझाव दूंगा। कनेक्शन बंद करने के बाद (httpWResp.Close()), आप स्ट्रीम रीडर का उपयोग करके पढ़ सकते हैं। GetResponseStream() विधि पर दस्तावेज़ देखें: http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.getresponsestream.aspx

HttpWebRequest HttpWReq = (HttpWebRequest) WebRequest.Create ("http://maps.googleapis.com/maps/api/geocode/xml?sensor=false & पता = 1 + समुद्री + प्लाजा + सैन + फ्रांसिस्को + सीए ");

HttpWebResponse HttpWResp = (HttpWebResponse) HttpWReq.GetResponse(); // प्रतिक्रिया कोड का उपयोग करने वाले कोड डालें। HttpWResp।बंद करे();

6

यहाँ आप क्या चाहते हैं

using System; 
using System.Web; 
using System.Net; 
using System.Runtime.Serialization.Json; 

namespace GoogleMapsSample 
{ 
    public class GoogleMaps 
    { 

     /// <summary> 
     /// 
     /// </summary> 
     /// <param name="address"></param> 
     /// <returns></returns> 
     public static GeoResponse GetGeoCodedResults(string address) 
     { 
      string url = string.Format(
        "http://maps.google.com/maps/api/geocode/json?address={0}&region=dk&sensor=false", 
        HttpUtility.UrlEncode(address) 
        ); 
      var request = (HttpWebRequest)HttpWebRequest.Create(url); 
      request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate"); 
      request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; 
      DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(GeoResponse)); 
      var res = (GeoResponse)serializer.ReadObject(request.GetResponse().GetResponseStream()); 
      return res; 
     } 


    } 

और आप सहायक वर्ग

namespace GoogleMapsSample 
{ 
    [DataContract] 
    public class GeoResponse 
    { 
     [DataMember(Name = "status")] 
     public string Status { get; set; } 
     [DataMember(Name = "results")] 
     public CResult[] Results { get; set; } 

     [DataContract] 
     public class CResult 
     { 
      [DataMember(Name = "geometry")] 
      public CGeometry Geometry { get; set; } 

      [DataContract] 
      public class CGeometry 
      { 
       [DataMember(Name = "location")] 
       public CLocation Location { get; set; } 

       [DataContract] 
       public class CLocation 
       { 
        [DataMember(Name = "lat")] 
        public double Lat { get; set; } 
        [DataMember(Name = "lng")] 
        public double Lng { get; set; } 
       } 
      } 
     } 

     public GeoResponse() 
     { } 
    } 


} 

तो फिर आप अपने नियंत्रण में इस कोड का उपयोग कर सकते हैं हो सकता है/इस

तरह WinForms प्राप्त करने के लिए एक नमूना कोड है
  GeoResponse response = new GeoResponse(); 
      response = GoogleMaps.GetGeoCodedResults(TextBoxPostcode.Text); 

और स्ट्रिंगबिल्डर या किसी और चीज का उपयोग कर कोड पर जेएस का निर्माण

13

पूरी तरह से प्रलेखित नेट पुस्तकालय -

नेट https://github.com/maximn/google-maps/

//Directions 
DirectionsRequest directionsRequest = new DirectionsRequest() 
{ 
     Origin = "NYC, 5th and 39", 
     Destination = "Philladephia, Chesnut and Wallnut", 
}; 

     DirectionsResponse directions = MapsAPI.GetDirections(directionsRequest); 

//Geocode 
GeocodingRequest geocodeRequest = new GeocodingRequest() 
{ 
     Address = "new york city", 
}; 


GeocodingResponse geocode = MapsAPI.GetGeocode(geocodeRequest); 

Console.WriteLine(geocode); 

//Elevation 
ElevationRequest elevationRequest = new ElevationRequest() 
{ 
     Locations = new Location[] { new Location(54, 78) }, 
}; 


ElevationResponse elevation = MapsAPI.GetElevation(elevationRequest); 

Console.WriteLine(elevation); 
+0

किसी ने भी इस एपीआई को एमवीसी 3 सी # एप पर आजमाया? मेरी तरफ यह एक लंबे समय के लिए पेज लोड हो रहा है: -? लेकिन जब मैं एक कंसोल ऐप चलाता हूं तो सब कुछ ठीक काम कर रहा है। – czetsuya

+0

@czetsuya मुझे पिछली रात गिटहब पर नवीनतम संस्करण के साथ एक ही समस्या थी। बस लटका हुआ है और कभी ठीक नहीं होता ... – Killnine

+0

हमने इसे कुछ दिन पहले ठीक कर दिया था। कृपया सुनिश्चित करें कि आप नवीनतम संस्करण पर चल रहे हैं। इसके अलावा, मैं अगले दिनों में एक nuget पैकेज अपलोड करेंगे। – Maxim

1

मैं हाल ही में एक परियोजना मैं पर काम कर रहा हूँ के लिए एक स्टोर लोकेटर का निर्माण करने के लिए किया था के लिए गूगल मैप्स वेब सेवा एपीआई आवरण। मैंने कभी भी Google या Bing API के किसी भी उपयोग का उपयोग नहीं किया है। इस ट्यूटोरियल का उपयोग करके मैं स्थान एपीआई का एक बहुत अच्छा समझ पाने में सक्षम था। मैं इस ट्यूटोरियल के माध्यम से जाने और तीन ट्यूटोरियल के अंत तक सुझाव देना चाहूंगा कि आपको अच्छी समझ होनी चाहिए।

Building a Store Locator ASP.NET Application Using Google Maps API (Part 1)

Building a Store Locator ASP.NET Application Using Google Maps API (Part 2)

Building a Store Locator ASP.NET Application Using Google Maps API (Part 3)

0

GuigleAPI nuget उपयोग कर आप आसानी से कर सकते हैं:

GoogleGeocodingAPI.GoogleAPIKey = "YOUR API KEY"; 
var result = await GoogleGeocodingAPI.GetCoordinatesFromAddressAsync("100 Market St, Southbank"); 
var latitude = result.Item1; 
var longitude = result.Item2; 

बस nuget आदेश स्थापित-पैकेज Easyforce.GuigleAPI और साथ इसे स्थापित तुम अच्छे हो चले जाओ।

चेक अधिक जानकारी के लिए इस उत्तर: https://stackoverflow.com/a/44484010/1550202