2

私はこれを見て数時間を費やしましたが、私が求めている解決策を見つけることができません。私は何かが足りないことを知っていますが、少しの助けを借りて行うことができます。

本質的に、私はアドレスを保持するレコードセットを備えたクラシックASPページを持っています。それらのアドレスをページにプルしたい(リピートリージョン付き)。そのビットを実行し、Googleが期待する文字列を正しい情報で取得します。

<script>var map_locations = [{"lat":52.954145,"lng":-4.101083,"title":"Nice House in Wales","street":"Prenteg, Porthmadog, LL49 9SR","price":"55,500"}]</script>

ただし、「lat」などを次のように置き換えたいと思います。

<script>var map_locations = [{"address":"<%=(rsLocations.Fields.Item("locPostCode").Value)%>","title":"Nice house in Wales","street":"Prenteg, Porthmadog, LL49 9SR","price":"55,500"}]</script>
  • 住所のLat/Lngを保持していません
  • GeoCodingに関するGoogleのAPIドキュメントを確認しました。何か役に立つものが見つかりましたが、「郵便番号」の「バインディング」をJSファイル内のアドレス関数に取り込む方法がわかりません。(リンク:https ://developers.google.com/maps/documentation/javascript/geocoding )。

上記のリンクに基づいてGoogleが提案することは次のとおりです。 Google GeoCoding

var geocoder;
var map;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(-34.397, 150.644);
var mapOptions = {
  zoom: 8,
  center: latlng,
  mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
}

function codeAddress() {
var address = document.getElementById("address").value;
geocoder.geocode( { 'address': address}, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    map.setCenter(results[0].geometry.location);
    var marker = new google.maps.Marker({
        map: map,
        position: results[0].geometry.location
    });
  } else {
    alert("Geocode was not successful for the following reason: " + status);
  }
});
}

<body onload="initialize()">
<div id="map_canvas" style="width: 320px; height: 480px;"></div>
<div>
<input id="address" type="textbox" value="Sydney, NSW">
<input type="button" value="Encode" onclick="codeAddress()">
</div>
</body>

現在、Googleのドキュメントでは「address」の入力変数を使用しているため、これを次のように使用できます。

var address = document.getElementById("address").value;

私の質問は、レコードセットバインディングをアドレスにする方法です。ASPファイルとJSファイルはうまく混合されておらず、ジオコーディングが正しく機能するようにアドレスにファイルを取得する方法がわかりません。

私のJSファイル(global.js)には、Lat / Lngsを介して送信する場合に機能する次のものが含まれており、ユーザーが操作するための適切なスタイルのマーカーと情報ボックスを提供します。

グーグルマップのものを書くことを扱うJSファイル

var map;
function initializePropertiesMap() {
if($('#map_canvas').length == 0)
    return;
var myLatlng = new google.maps.LatLng(52.954145,-4.101083);
var myOptions = {
    zoom: 8,
    center: myLatlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
}
var infowindow = new google.maps.InfoWindow();
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
$.each(map_locations, function(key, value) { 
    var marker = new google.maps.Marker({
        position: new google.maps.LatLng(value['lat'], value['lng']),
        map: map,
        icon: 'css/images/marker.png',
        scrollwheel: false,
        streetViewControl:true,
        title: value['title']
    });

    var link = "link";
    google.maps.event.addListener( marker, 'click', function() {
        // Setting the content of the InfoWindow
        var content = '<div id="info" class="span5"><div class="row">' + '<div     class="span2"><img src="css/images/houses/house_'+(key+1)+'.jpg" class="thumbnail" style="width:135px"/></div>' + '<div class="span3"><h3>' + value['title'] + '</h3><h6>' + value['street'] + '</h6>' + '<strong>&pound;' + value['price'] + '</strong>' + '<p><a href="listing-detail.asp">Read More >></a></p>' + '</div></div></div>';
        infowindow.setContent(content );
        infowindow.open(map, marker);
    });

});


}

これを微調整したので、私はそれを機能させることができず、誰かが私に何かアドバイスがあるかどうか疑問に思いましたか?

ありがとうニック

アップデート

私がこれを試したことに言及したいと思っただけです:

var address = <%=rsLocations.Fields.Item("locPostcode").value%>;

それは明らかにJSファイルエラーとしては機能しません。

4

1 に答える 1

-2

XMLからの住所のジオコーディングに関する同様の質問に対するこの回答が役立つ場合があります。

ジオコーダーの非同期性に問題があり、多くのアドレスを追加すると、ジオコーダーの割り当て/レート制限に問題が発生します(特に、コードがジオコーダーの戻りステータスを確認しないため)。

最も簡単な解決策は、関数クロージャを使用して、ジオコーダーへの呼び出しを返された結果に関連付けることです。

ポイントの緯度と経度がある場合は、それをデータベースに保存し、それを使用してポイントを表示します。ページの読み込み時に(非同期の)ジオコーダーを使用してアドレスをジオコーディングできますが、アドレスが約10を超えると、ジオコーダーの割り当て/レート制限に遭遇します。 ジオコーディング戦略に関するこの記事は、それを行うのに役立つ場合があります。

于 2012-11-12T20:09:03.450 に答える