Как получить долготу и широту с адреса, не показывая карту - PullRequest
0 голосов
/ 01 февраля 2010

Я хочу получить широту и долготу от адреса в одном из моих приложений asp.net, я знаю, что это возможно, используя Google API, но я хочу сделать это, не показывая Google Map. Как я могу это сделать? Я также хочу получить расстояние между двумя парами широты и долготы. Пожалуйста, направьте меня и в этом отношении.

Спасибо Панкай

Ответы [ 3 ]

1 голос
/ 02 июня 2011

Или попробуйте это ..

Примечание. Вам нужно заменить «YabbaDabbaDoo» своим собственным ключом API Карт Google.

В теле вашей веб-страницы давайте поместим несколько текстовых полей в форму, чтобы мы могли ввести детали адреса, для которого мы хотим найти координаты (и кнопку для вычисления координат): 1005 *

Адресная строка 1: Адресная строка 2: Город: Почтовый индекс: Страна: Широта: Долгота:

Теперь все, что осталось сделать, - это создать функцию javascript, которая будет выполнять вычисления. Итак, вот оно:

function calculateCoordinates() {

    var txtAddress1 = document.getElementById('<%= txtAddress1.ClientID%>');
    var txtAddress2 = document.getElementById('<%= txtAddress2.ClientID%>');
    var txtTown = document.getElementById('<%= txtTown.ClientID%>');
    var txtPostcode = document.getElementById('<%= txtPostcode.ClientID%>');
    var txtCountry = document.getElementById('<%= txtCountry.ClientID%>');
    var txtLatitude = document.getElementById('<%= txtLatitude.ClientID%>');
    var txtLongitude = document.getElementById('<%= txtLongitude.ClientID%>');

    var address = txtAddress1.value + ', ';
    address += txtAddress2.value + ', ';
    address += txtTown.value + ', ';
    address += txtPostcode.value + ', ';
    address += txtCountry.value;

    var geocoder;
    geocoder = new GClientGeocoder();
    geocoder.getLatLng(address, function(latlng) {
        if (!latlng) {
            alert(address + ' not found');
        } else {
            txtLatitude.value = latlng.lat();
            txtLongitude.value = latlng.lng();
        }
    });

}

1 голос
/ 01 февраля 2010

Вам нужно сделать все в функции загрузки, как описано в http://code.google.com/apis/maps/documentation/introduction.html#Loading_the_Maps_API Основная идея (с использованием версии 2 API):

var coder = new GClientGeocoder();
coder.getLatLng(
                "Addr to Geocode",
                function(point) {
                    if (point) {
                        // Do something with GLatLng point                
                    }
                }
            );

Чтобы узнать расстояние (в метрах), выполните:

point1.distanceFrom(point2)
0 голосов
/ 02 июня 2011

попробуйте этот код ........... В PAge нагрузка

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            GetPhysiciansForMap("");    
        }

        ((HtmlControl)Master.FindControl("myBody")).Attributes.Add("onload", "GenerateMap()");

    }

И на странице .aspx

<script type="text/javascript">
  var geocoder;
  var map = null;
  var lat, lng;
  var infowindow = new google.maps.InfoWindow(
  { 
    size: new google.maps.Size(150,50)
  });

  function GenerateMap() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(40.730885,-73.997383);
    var myOptions = {
      zoom: 8,
      center: latlng,
      mapTypeControl: true,
      mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
      navigationControl: true,
      mapTypeId: google.maps.MapTypeId.ROADMAP
      }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    google.maps.event.addListener(map, 'click', function() {
        infowindow.close();
        });

  getHiddenValues();

  for (var i = 0; i < lat.length-1; i++) {
      var point = new google.maps.LatLng(lat[i], lng[i]); 
      var marker = createMarker(point,'<div style="width:240px">Address: <br /> City: <br /> State: <br /> Lat n Lng: '+lat[i]+ ', ' +lng[i]+'<\/div>')
      }
}

  function createMarker(latlng, html) {
    var contentString = html;
    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        zIndex: Math.round(latlng.lat()*-100000)<<5
        });

    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(contentString); 
        infowindow.open(map,marker);
        });
}

function getHiddenValues()
  {
    lat = document.getElementById("ctl00_ContentPlaceHolder1_hfLat").value.split(',');
    lng = document.getElementById("ctl00_ContentPlaceHolder1_hfLng").value.split(',');
  }


</script>
...