【问题标题】:script to search address on google maps在谷歌地图上搜索地址的脚本
【发布时间】:2015-04-16 00:09:05
【问题描述】:

我有来自纽约地区的 1100 家医院的名称。我需要从谷歌上找到这些医院的地址。我正在寻找一些可以用来提供所有这些医院名称的脚本,它可以返回给我一个地址。该脚本可以返回一个简单的谷歌搜索结果。 输入格式:

Hospital Name
Center for Ambulatory Surgery
Genetic Diagnostic Labs Inc

所需的输出格式:

Hospital Name   Hospital Address
Center for Ambulatory Surgery   3112 Sheridan Dr, Amherst, NY 14226
Genetic Diagnostic Labs Inc 490 Delaware Ave, Buffalo, NY 14202

【问题讨论】:

标签: java regex r google-maps web-scraping


【解决方案1】:

google Places API解决,但结果可能不是很准确: http://codepen.io/anon/pen/JogeyV?editors=101

  var NY_latlng = new google.maps.LatLng(40.828624, -73.898605);
  map = new google.maps.Map(document.getElementById('map-canvas'), {
    center: NY_latlng,
    zoom: 15
  });

  var hospitals = [];
  var hospitals_names = ["Center for Ambulatory Surgery","Genetic Diagnostic Labs Inc"];//insert your full list here

  var service = new google.maps.places.PlacesService(map);
  hospitals_names.forEach( function(name ){

    service.textSearch(
                        {
                         query: name, 
                         location: NY_latlng,
                         radius: 50000, //in meter
                        },function(results,status){

                  if (status == google.maps.places.PlacesServiceStatus.OK){
                    var hospital= { name: name, addresses: []};
                    $('#address-list').append("<h2>"+name+"</h2><ul></ul>");
                    for (var i = 0; i < results.length; i++) {
                      hospital.addresses.push( results[i].formatted_address );

                        $('#address-list > ul').append("<li>"+results[i].formatted_address);
                    }
                    hospitals.push( hospital );

                  }

 });

【讨论】:

    【解决方案2】:

    您可以在 R 中使用 ggmap 包执行此操作,但可能不够可靠,无法产生您想要的结果。例如,这种地理编码尝试失败:

    geocode("Genetic Diagnostic Labs Inc")
    
    Warning message:
    geocode failed with status ZERO_RESULTS, location = "Genetic Diagnostic Labs Inc" 
    

    为了说明解决方案,我在 Google 搜索中附加了“N​​Y”:

    library(ggmap)
    hospital_names <- c("Center for Ambulatory Surgery", "Genetic Diagnostic Labs Inc")
    address_vec <- lapply(hospital_names, function(x) revgeocode(as.numeric(geocode(paste(x,", NY")))))
    result <- data.frame(name = hospital_names, address = unlist(address_vec))
    

    结果:

    result
                               name                                      address
    1 Center for Ambulatory Surgery   426 Union Road, West Seneca, NY 14224, USA
    2   Genetic Diagnostic Labs Inc City Hall Park Path, New York, NY 10007, USA
    

    但这些不是您指定的地址 - 您可能需要完善您的输入。

    【讨论】:

    • 另见dismo::geocode,它采用地名向量。
    猜你喜欢
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多