В воскресенье я решил повременить и посмотрел api карты google. Какой зверь! Я использовал node.js для отправки запросов с помощью модуля запроса, поэтому технически я все еще изучаю/практикую. Я также использовал модуль FS для хранения копий данных, которые я получил от указанных запросов. Но в любом случае по моему опыту.

Карта Google разделена на несколько разных API. Я едва поцарапал поверхность. Мне удалось пройти через геокод и API мест. Ниже приведена часть моего объекта URL, который я создал для отправки запросов.

var url = {
 radar:“https://maps.googleapis.com/maps/api/place/radarsearch/json?",
 geo: “https://maps.googleapis.com/maps/api/geocode/json?"
}

Google Places API требует широты и долготы, а также радиуса до места, которое вы хотите найти. Как нам это получить? API геокодирования! Используя API-интерфейс геокодирования, вы можете запрашивать данные на основе местоположения улицы.

Вот пример моих навыков обратного вызова XD (следующая попытка будет с промисами):

//example address
https://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY
//Gets My Street Geo Data
request.get(url.geo+header.address+header.key)
.on('response', (res) => {
//append to a file    
    fs.appendFile('location.txt',JSON.stringify(res), (error) => {
      console.error(error);
    });
    console.log('complete');
})
.on('error', (error) => {
  console.error(error);
})

Пример данных, полученных геокодом:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "6",
               "short_name" : "6",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Deer Path Road",
               "short_name" : "Deer Path Rd",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Lebanon",
               "short_name" : "Lebanon",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Clinton Township",
               "short_name" : "Clinton Township",
               "types" : [ "administrative_area_level_3", "political" ]
            },
            {
               "long_name" : "Hunterdon County",
               "short_name" : "Hunterdon County",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "New Jersey",
               "short_name" : "NJ",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "08833",
               "short_name" : "08833",
               "types" : [ "postal_code" ]
            },
            {
               "long_name" : "4204",
               "short_name" : "4204",
               "types" : [ "postal_code_suffix" ]
            }
         ],
         "formatted_address" : "6 Deer Path Rd, Lebanon, NJ 08833, USA",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 40.6309583,
                  "lng" : -74.80324569999999
               },
               "southwest" : {
                  "lat" : 40.630735,
                  "lng" : -74.8035089
               }
            },
            "location" : {
               "lat" : 40.6308467,
               "lng" : -74.80337729999999
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.6321956302915,
                  "lng" : -74.80202831970848
               },
               "southwest" : {
                  "lat" : 40.62949766970851,
                  "lng" : -74.80472628029149
               }
            }
         },
         "partial_match" : true,
         "place_id" : "ChIJa_Op_Z-Nw4kR0lWviRuKO60",
         "types" : [ "premise" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "6",
               "short_name" : "6",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Deerpath Road",
               "short_name" : "Deerpath Rd",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Califon",
               "short_name" : "Califon",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Hunterdon County",
               "short_name" : "Hunterdon County",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "New Jersey",
               "short_name" : "NJ",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "07830",
               "short_name" : "07830",
               "types" : [ "postal_code" ]
            },
            {
               "long_name" : "4202",
               "short_name" : "4202",
               "types" : [ "postal_code_suffix" ]
            }
         ],
         "formatted_address" : "6 Deerpath Rd, Califon, NJ 07830, USA",
         "geometry" : {
            "location" : {
               "lat" : 40.694663,
               "lng" : -74.861784
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.69601198029149,
                  "lng" : -74.8604350197085
               },
               "southwest" : {
                  "lat" : 40.6933140197085,
                  "lng" : -74.86313298029151
               }
            }
         },
         "partial_match" : true,
         "place_id" : "ChIJG7hh27mOw4kRKjnQzsvys6Q",
         "types" : [ "street_address" ]
      }
   ],
   "status" : "OK"
}

Получив эти данные, вы можете использовать информацию о широте и долготе для получения информации от местных предприятий… Все, от того, как оценивается компания, до ее рабочего времени и даже отзывов.

пример: «Designer Dawg» имеет высокую оценку.. я должен проверить это однажды..

========Requested Business Info=========
{
   "html_attributions" : [],
   "result" : {
      "address_components" : [
         {
            "long_name" : "Whitehouse Station",
            "short_name" : "Whitehouse Station",
            "types" : [ "neighborhood", "political" ]
         },
         {
            "long_name" : "Readington Township",
            "short_name" : "Readington Township",
            "types" : [ "administrative_area_level_3", "political" ]
         },
         {
            "long_name" : "Hunterdon County",
            "short_name" : "Hunterdon County",
            "types" : [ "administrative_area_level_2", "political" ]
         },
         {
            "long_name" : "New Jersey",
            "short_name" : "NJ",
            "types" : [ "administrative_area_level_1", "political" ]
         },
         {
            "long_name" : "United States",
            "short_name" : "US",
            "types" : [ "country", "political" ]
         },
         {
            "long_name" : "08889",
            "short_name" : "08889",
            "types" : [ "postal_code" ]
         }
      ],
      "adr_address" : "468 rt 22 West, \u003cspan class=\"locality\"\u003eWhitehouse Station\u003c/span\u003e, \u003cspan class=\"region\"\u003eNJ\u003c/span\u003e \u003cspan class=\"postal-code\"\u003e08889\u003c/span\u003e, \u003cspan class=\"country-name\"\u003eUSA\u003c/span\u003e",
      "formatted_address" : "468 rt 22 West, Whitehouse Station, NJ 08889, USA",
      "formatted_phone_number" : "(908) 713-0315",
      "geometry" : {
         "location" : {
            "lat" : 40.6327756,
            "lng" : -74.7819695
         },
         "viewport" : {
            "northeast" : {
               "lat" : 40.63412458029151,
               "lng" : -74.78062051970851
            },
            "southwest" : {
               "lat" : 40.63142661970851,
               "lng" : -74.78331848029151
            }
         }
      },
      "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
      "id" : "b26cb9f3007bc23ed891d6cdec6e1c35c06fc022",
      "international_phone_number" : "+1 908-713-0315",
      "name" : "Designer Dawgs",
      "opening_hours" : {
         "open_now" : false,
         "periods" : [
            {
               "close" : {
                  "day" : 0,
                  "time" : "1630"
               },
               "open" : {
                  "day" : 0,
                  "time" : "1130"
               }
            },
            {
               "close" : {
                  "day" : 1,
                  "time" : "1630"
               },
               "open" : {
                  "day" : 1,
                  "time" : "1130"
               }
            },
            {
               "close" : {
                  "day" : 2,
                  "time" : "1630"
               },
               "open" : {
                  "day" : 2,
                  "time" : "1130"
               }
            },
            {
               "close" : {
                  "day" : 3,
                  "time" : "1930"
               },
               "open" : {
                  "day" : 3,
                  "time" : "1130"
               }
            },
            {
               "close" : {
                  "day" : 4,
                  "time" : "1930"
               },
               "open" : {
                  "day" : 4,
                  "time" : "1130"
               }
            },
            {
               "close" : {
                  "day" : 5,
                  "time" : "1930"
               },
               "open" : {
                  "day" : 5,
                  "time" : "1130"
               }
            },
            {
               "close" : {
                  "day" : 6,
                  "time" : "1930"
               },
               "open" : {
                  "day" : 6,
                  "time" : "1130"
               }
            }
         ],
         "weekday_text" : [
            "Monday: 11:30 AM – 4:30 PM",
            "Tuesday: 11:30 AM – 4:30 PM",
            "Wednesday: 11:30 AM – 7:30 PM",
            "Thursday: 11:30 AM – 7:30 PM",
            "Friday: 11:30 AM – 7:30 PM",
            "Saturday: 11:30 AM – 7:30 PM",
            "Sunday: 11:30 AM – 4:30 PM"
         ]
      },
      "place_id" : "ChIJpYUl-36Sw4kR8wCu0uYNWKs",
      "rating" : 5,
      "reference" : "CmRSAAAACUc1KwTxaOhWurR-nxAiY0ZllS7U8xhgOlGP5gky8D-ofo4tHYXBB8R7vRlPqjR1gg7NQ-VSz7oct2zIMZ8RKRizUFRuU_CQCMpCrr3Rhy_bf_1bOWQJK-f2HbO9IukZEhDYXPulTBdtCpHowBkDrajGGhQRg41PYKuLOyRQnoBrEyBVZfploA",
      "reviews" : [
         {
            "author_name" : "Jackson Harris",
            "author_url" : "https://www.google.com/maps/contrib/109232730794656278684/reviews",
            "language" : "en",
            "profile_photo_url" : "https://lh5.googleusercontent.com/-aNBxLET0ywo/AAAAAAAAAAI/AAAAAAAAAC0/QjVBRXdIG_w/s128-c0x00000000-cc-rp-mo/photo.jpg",
            "rating" : 5,
            "relative_time_description" : "a month ago",
            "text" : "",
            "time" : 1493255146
         },
         {
            "author_name" : "Garrett Armbruster",
            "author_url" : "https://www.google.com/maps/contrib/112649301744217371770/reviews",
            "language" : "en",
            "profile_photo_url" : "https://lh3.googleusercontent.com/-NXHSRlqwwgw/AAAAAAAAAAI/AAAAAAAAAGs/JQ9TsqQZpEY/s128-c0x00000000-cc-rp-mo-ba1/photo.jpg",
            "rating" : 5,
            "relative_time_description" : "8 months ago",
            "text" : "",
            "time" : 1475810809
         }
      ],
      "scope" : "GOOGLE",
      "types" : [ "restaurant", "food", "point_of_interest", "establishment" ],
      "url" : "https://maps.google.com/?cid=12346633663464472819",
      "utc_offset" : -240,
      "vicinity" : "468 rt 22 West, Whitehouse Station",
      "website" : "http://www.designerdawgs.com/"
   },
   "status" : "OK"
}

Вот код, который я использовал для получения этих данных… Перезвоните, черт возьми ≥=)

request.get(url.radar+location+header.radius+header.type+header.key)
.on('response', (res) => {
    var resData = '';
    res.on('data', (data) => {
      resData += data;
    });
    res.on('end', () => {
      fs.appendFile('location.txt', '\n\n=======Request Nearby Businesses==========\n\n' + resData, (error) => {
        console.error(error);
      });
results = JSON.parse(resData);
for(var i=0; i<results.results.length; i++) {
request.get(url.place+'placeid='+results.results[i].place_id+header.key)
        .on('response', (res) => {
            var resData = '';
            res.on('data', (data) => {
              resData += data;
            });
            res.on('end', () => {
fs.appendFile('location.txt', '\n\n========Requested Business Info=========\n\n' + resData, (error) => {
                console.error(error);
              });
            })
          })
        }
    });
})
.on('error', (error) => {
  console.error(error);
})

Все сказано и сделано. Мне было весело ковыряться в Google API. Нам еще многое предстоит узнать, и я могу представить массу крутых вещей, которые вы могли бы сделать/сделать с этими данными.