0

答えはタイトルとは無関係ですが、この質問は解決されています。これは構造が悪い質問でしたが、残念ながらそのまま削除することはできません。ヘルプとコードを見てくれてありがとう。

Googleマップを使用するアプリケーション用に2つの通常のjavascripts関数と1つのjquery関数があります。簡単に言えば、このように見えます

<script type="text/javascript">
window.onload = function()
{
    initialize();
}
</script>

<script type="text/javascript">
var geocoder;
var markerE;
var theLocation;
var myLatlng;
var infowindow = new google.maps.InfoWindow();
var markersArray = [];
var eventMarkerArr = [];
var retrievedLatLng;
var retrievedLatLngArr = [];

var map;
$(document).ready(function(){    
 $('#tabs a').click(function(e){
    e.preventDefault();
    $(this).tab('show');
    if($(this).attr("href").substring(1)=='event')
    {   
        show('event');
        hide('location');
    }
    else if($(this).attr("href").substring(1)=='location')
    {
        show('location');
        hide('event');
    }
    });
   });


    function initialize() {
 geocoder = new google.maps.Geocoder(); 
 var myLatlng = new google.maps.LatLng(1.3667, 103.7500);
  var myOptions = {
    zoom: 13,
    center: myLatlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
     styles:[{
         featureType: "poi.attraction",
            stylers: [
              { visibility: "off" }
                ]},{
                featureType: "poi.business",
                stylers: [
                  { visibility: "off" }
                ]
              },{
                featureType: "poi.government",
                stylers: [
                  { visibility: "off" }
                ]
              },{
                featureType: "poi.medical",
                stylers: [
                  { visibility: "off" }
                ]
              },{
                featureType: "poi.park",
                stylers: [
                  { visibility: "off" }
                ]
              },{
                featureType: "poi.place_of_worship",
                stylers: [
                  { visibility: "off" }
                ]
              },{
                featureType: "poi.school",
                stylers: [
                  { visibility: "off" }
                ]
              },{
                featureType: "poi.sports_complex",
                stylers: [
                  { visibility: "off" }
                ]
              },{
              }
            ]
    };

  map = new google.maps.Map(document.getElementById('map_canvas'),
      myOptions);

  if (postalArr) {
        for (var i = 0; i < postalArr.length; i++ ) {
            codeAddress(postalArr[i]);
        }
  }
  else
  {
      document.getElementById("event_list").value = "There are no events!";
  }

  var locationPin = 'images/green-pin.png'; 


}     

var address;
var eventPin = "images/blue-pin.png";
function codeAddress(postal) {      
    geocoder.geocode( {'address': postal + ", Singapore"}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        retrievedLatLng = results[0].geometry.location;
        var eventwindow = new google.maps.InfoWindow();
        var markerE = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location,
            icon: eventPin,
        });
        markerE.mycategory = "event";
        markerE.setVisible(false);
        google.maps.event.addListener(markerE, 'click', function(){
            eventwindow = new google.maps.InfoWindow({
                content: "hello",
            });
            eventwindow.open(map,marker);
        });
        $.ajax({
          type:"GET",
          url: "http://maps.googleapis.com/maps/api/geocode/json?latlng="+retrievedLatLng+"&sensor=false",
          dataType: "jsonp",
          success: function(json){
          if(json.status == 'OK')
            {
            alert("success");
            }
    }
});
        eventMarkerArr.push(markerE);
        retrievedLatLngArr.push("codeAddress:"+retrievedLatLng);
        alert(retrievedLatLngArr[0]);
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }

google.maps.event.addDomListener(window、'load'、initialize);

私がこれをしている理由は、私が得ることができないように見えるからですlatlng。私が最初にしたことは、マップを初期化しwindow.onload = function(){ initialize() }、.ajax関数を呼び出す$(window).load(function(){...});ことでした。どちらの方法でも正しく取得できません。

これが紛らわしいように聞こえたらごめんなさい。これだけでは不十分な場合は、詳細を追加します。

編集:

results[0].geometry.locationは、6桁の郵便番号の逆ジオコーディングから生成される緯度の長さです。完全な住所が欲しいのですが、6桁の郵便番号しかありません。緯度と経度は、Googleマップにマーカーを配置するためにも使用されます。したがって、完全なアドレスを取得するために、googleが提供するURLを使用してjsonの結果を取得しようとしています。

さらに編集: コードの全長を追加

4

1 に答える 1

0

results[0].geometry.locationがすでに有効な場所であると仮定します。私はこれが事実であるとは思いませんが、あなたはすでにそれを持っているかもしれません

  url: "http://maps.googleapis.com/maps/api/geocode/json?latlng="+results[0].geometry.location.lat() +","+results[0].geometry.location.leg()+"&sensor=false";

カンマによる区切りが正しいかどうかを確認することをお勧めします

于 2012-07-11T08:12:13.443 に答える