2011-07-27 8 views
0

私は誰かが私を助けてくれるかどうか疑問に思います。GoogleマップクリックしてHTMLフォームフィールドを表示

私はマップに1つまたは複数のマーカーを追加できる次のJSコードを持っています。

(function add() { 
var map, geocoder; 

     window.onload = function() { 

     var myOptions = { 
      zoom: 14, 
      center: new google.maps.LatLng(54.312195845815246,-4.45948481875007), 
      mapTypeId: google.maps.MapTypeId.SATELLITE, 
      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); 

google.maps.event.addListener(map, 'click', function(event) { 
    placeMarker(event.latLng); 
    }); 
} 

function placeMarker(location) { 
    var clickedLocation = new google.maps.LatLng(location); 
    var marker = new google.maps.Marker({ 
     position: location, 
     map: map 
    }); 

    map.setCenter(location); 
} 
})(); 

これは、ユーザーがマーカーまたは自分が作成したマーカーと、このためのHTMLコードは以下のとおりであるカットダウンバージョンに関する詳細を追加することができますフォームの一部です:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Add</title> 
<link rel="stylesheet" href="css/addfindsstyle.css" type="text/css" media="all" /> 
<script type="text/javascript" 
src="http://maps.google.com/maps/api/js?sensor=false&language=en"></script> 
<script type="text/javascript" src="js/addfinds.js"></script> 
</head> 
<body> 
<form name="add" id="add"> 
<div> 
<label for="address"> 

    <p>&nbsp;</p> 
    <p align="left"> 
    <label> 
    <div align="center">Location Name<br /> 
     <input name="locationname" type="text" id="locationname" /> 
    </div> 
    </label> 
    </p> 
    <label>Description 
    <input name="description" type="text" id="description" /> 
    <input type="submit" name="Submit" value="Submit" /> 
    </label> 
</div> 
</form> 
<div id="map"></div> 
</body> 
</html> 

誰かがおそらく、私がフィールド上にマーカーが作成されるまでフィールドを隠す(この例では 'description'フィールド)と「submit」ボタンを押してから、送信ボタンを押すと、およびボタンは、次のマーカーが作成されるまで隠されます。

感謝

クリス

UPDATE

こんにちは、コードのための多くのおかげで。

私は何か信じられないほど愚かなここにいる必要がありますが、あなたが提案したコードを追加しましたが、動作していないようです。

私はにJavascriptのラインを変更した:私は間違ってください行ってきたところあなたはおそらくを教えてもらえ

body { 

    font-family: Calibri; 
    font-size: 14px; 
    width: auto; 
    border-left-style: none; 
    border-bottom-style: none; 
    border-right-style: none; 
    border-top-style: none; 
    text-align: center; 
    border-top-color: #FFFFFF; 
    outline-style: none; 
    right: auto; 
    position: absolute; 
    left: auto; 
    top: auto; 
    bottom: auto; 
    visibility: visible; 
} 
form { 
    #add display: none; 
    margin-bottom: 10px; 
    clear: both; 
    font-size: 14px; 
    visibility: visible; 
} 

#map { 
    width: 795px; 
    height: 503px; 
    border: 1px solid black; 
    position: absolute; 
    left: 12px; 
    top: 215px; 
    visibility: visible; 
} 

google.maps.event.addListener(map, 'click', function(event) { 
$("#add").show(); $("#add").submit(function(event){$(this).hide(); return false;}); 
placeMarker(event.latLng); 

とCSSに?

感謝

クリス

+0

私はjQueryのを使用していますと指摘しました。 JavaScriptコードの前にページにjQueryを追加する必要があります。 –

答えて

0

あなたが最初の要素を隠すためにCSSを使用することができます。

#add { 
    display: none; 
} 

その後、フィールドを非表示/表示するにはJavaScript(例は簡潔にするためにjQueryを使用しています)を使用します。

google.maps.event.addListener(map, 'click', function(event) { 

} 

追加インサイド

$("#add").show(); 
$("#add").submit(function(event){$(this).hide(); return false;}); 

ここで(、しかし本当にラフなスタイリングなし)jsfiddle例ませんhttp://jsfiddle.net/phKEt/

+0

こんにちは、返信とjsfiddleの設定に感謝します。私はそれを追加したので、イベントマーカーの行が欠落していました。奇妙なことは、jsfiddleでは動作させることができますが、マクロメディアやサーバーからは動作しないということです。私は以前これを見たことがない。アイデアはありますか?多くのありがとうChris – IRHM

+0

私はこれを動作させるようにしました。私はあなたが 'jquery'をダウンロードすれば助けてくれると思う。謝罪、それは長い一日だった。あなたの時間のトラブルと忍耐のために多くのおかげです。クリスは親切だ。 – IRHM

+0

Chrisさん、ありがとうございました! –

関連する問題