2011-08-12 1 views
1

私は誰かが私を助けることができるかもしれないかと思います。Googleのマーカーボタンで表示ボタン

私は以下のコードを使用して、ジオコードアドレスの詳細をリバースしています。この場合、OSグリッドリファレンスから開始します。

誰かがおそらく私がどのようにマークをドラッグすると、 'regenerateosgridref'というボタンがフォーム上に現れるかをコードを含めてどうかを教えてください。

(function reversegeocodeosgridref() { 

    var map, geocoder, latlng, marker; 

    window.onload = function() { 

     var myOptions = { 
      zoom: 6, 
      center: new google.maps.LatLng(54.312195845815246, -4.45948481875007), 
      mapTypeId: google.maps.MapTypeId.ROADMAP, 
      mapTypeControl: true, 
      mapTypeControlOptions: { 
       style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, 
       position: google.maps.ControlPosition.TOP_RIGHT 
      }, 
      navigationControl: true, 
      navigationControlOptions: { 
       style: google.maps.NavigationControlStyle.ZOOM_PAN, 
       position: google.maps.ControlPosition.TOP_LEFT 
      }, 
      scaleControl: true, 
      scaleControlOptions: { 
       position: google.maps.ControlPosition.BOTTOM_LEFT 
      } 
     }; 

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

     var form = document.getElementById('searchforlocationosgridref'); 

     form.onsubmit = function() { 

      var lat = document.getElementById('osgb36lat').value; 
      var lng = document.getElementById('osgb36lon').value; 

      var latlng = new google.maps.LatLng(lat, lng); 

      getAddress(latlng); 

      return false; 
     } 

    } 

    function geocodePosition(pos) { 
     geocoder.geocode({ 
      latLng: pos 
     }, 

     function(responses) { 
      if (responses && responses.length > 0) { 
       updateMarkerAddress(responses[0].formatted_address); 
      } else { 
       updateMarkerAddress('Cannot determine address at this location.'); 
      } 
     }); 
    } 

    function updateMarkerAddress(str) { 
     document.getElementById('returnedaddress').value = str; 
    } 

    function getAddress(latlng) { 

     if (!geocoder) { 
      geocoder = new google.maps.Geocoder(); 
     } 

     geocoder.geocode({ 
      'latLng': latlng 
     }, function(results, status) { 

      if (status == google.maps.GeocoderStatus.OK) { 

       if (results[0]) { 

        map.setCenter(results[0].geometry.location); 
        if (!marker) { 
         map.setZoom(16); 
         marker = new google.maps.Marker({ 
          map: map, 
          draggable: true 
         }); 
        } 
       } 

       marker.setPosition(results[0].geometry.location); 

       google.maps.event.addListener(marker, function() { 
        updateMarkerAddress; 
       }); 

       google.maps.event.addListener(marker, 'dragend', function() { 
        geocodePosition(marker.getPosition()); 
        document.getElementById('osgb36lat').value = marker.position.lat(); 
        document.getElementById('osgb36lon').value = marker.position.lng(); 

        var point = marker.getPosition(); 
        map.panTo(point); 
       }); 

       latLng = [marker.position.lat(), marker.position.lng()].join(', '); 
       geocodePosition(marker.getPosition()); 

       document.getElementById('returnedaddress').value = results[0].formatted_address; 
      } 
     }) 
    } 
})(); 

多くの感謝と種類について

クリス

答えて

0

は、ボタンが表示されますあなたのマーカーdragendイベントに行を追加します。あなたのdragendイベントイベントで

document.getElementById('regenerateosgridref').style.display = 'block'; 
+0

多くの場合、私の投稿に返信する時間をとってくれてありがとう。私はこれを試してみましたが、残念ながらそれは動作しません。隠れた状態でボタンが始動しません。アイデアはありますか?敬具。クリス – IRHM

+0

どのように始まりますか?あなたのボタンはどこですか? – AlexBrand

+0

こんにちは、ボタンは私のHTMLフォームの中にあり、そこにはOSグリッドリファレンスを再計算します。マーカーがドラッグされると敬具。 Chris – IRHM

0

よりもむしろ私のフォームに別のボタンを追加します。マーカーがドラッグされているときにOSグリッドリファレンスを更新するいくつかのJavascriptコードを追加しました。

関連する問題