-3

以下のコードは、PHP ページに地図を表示するために使用されます。サイド バーの特定の場所へのリンクをクリックすると、マーカーまたはピンが表示されます。リンクをクリックすると、クリックしたリンクの場所にマップがズームされます。私はもともと V2 でコードを書いていましたが、現在それを V3 に変換しようとしています。地図はページに表示されていますが、リンクをクリックしても地図の場所が取得されません。リンクがクリックされると、以下のコードで showme() 関数が呼び出されます。

これは JavaScript コードです。

    var geoCoder = null;
    var marker = null;
    var center = false;
    var show_info = false;

    function initialize() {
        var mapOptions = {
            center: new google.maps.LatLng(10.4032173, - 61.3719045),
            zoom: 9,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById("map"),
        mapOptions);
    }

  function showAddress(address,description) {
   var infowindow = new google.maps.InfoWindow({content:description});
      geoCoder = new google.maps.Geocoder(); 
      if (geoCoder) {
        geoCoder.getPosition()(
          address,
          function(point) {
            if (point){
              if(center) map.setCenter(point, 13);
              marker = new google.maps.Marker(point);
              google.maps.event.addListener(marker, "click", function() {
                infowindow.open(point, description);
              });
              marker.setMap(marker);
                if(show_info) infowindow.open(point, description);
              }
            }
        );
      }
     geoCoder = null;
    }


    function showLatLng(lat,lng,description) {
            var point=new google.maps.LatLng(parseFloat(lat),parseFloat(lng));
            if (point){
              if(center) map.setCenter(point, 14);
              marker = new google.maps.Marker({position:point,
                                           map: map});

                var infowindow = new google.maps.InfoWindow({content:description});

              google.maps.event.addListener(marker, "click", function() {
                infowindow.open(point, description);
              });
              marker.setMap(maker);
                if(show_info)  infowindow.open(point, description);
              }
      }

    function showme(name, address, lat, lng, contact, Link) {
        var description = desc(name, address, contact, Link);
        center = true;
        show_info = true;
        if (lat || lng) showLatLng(lat, lng, description);
        else showAddress(address, description);
        return false;
    }

    function desc(name, address, contact, Link) {
        //var address = "<div class='googleTip'><div><h1>"+name+"</h1></div><p class='address'>"+address+"<br />"+contact+"<br />"+delivery+"</p><span class='mapLink'></span></div>";
        var Address = ["<div class='googleTip' style='color:#000000; padding:5px'><h3>",
        name, "</h3>", "<div>",
        address, "<br />",
        webLink, "</div></div>", ].join('');
        return Address;
    }

これを修正するにはどうすればよいですか。私はこれに不満を感じています。

4

1 に答える 1

0

「showMe関数は引き続きAPIv2構文を使用しています。GMarkerはgoogle.maps.Marker、GEvent.addListenerはgoogle.maps.event.addListener、map.openInfowindowは新しい構文に合わせて調整する必要があります。ドキュメントを参照してください。以下のように(テストされていません):

function showLatLng(lat,lng,description) {
        var point=new google.maps.LatLng(parseFloat(lat),parseFloat(lng));
        if (point){
          if(center_point) map.setCenter(point, 14);
          marker = new google.maps.Marker({position:point,
                                           map: map});
          var infowindow = new google.maps.InfoWindow({content:description});

          google.maps.event.addListener(marker, "click", function() {
            infowindow.open(point, marker);
          });
          marker.setMap(map);
            if(show_info) infowindow.open(point, marker);
          }
  }

ジオコーダーのコールバック関数にも同じ問題があります。

于 2012-11-05T17:35:10.017 に答える