2012-02-03 75 views
0

目前我正在嘗試根據用戶點擊設置地圖上的標記。我嘗試了所有我能想到的和沒有作品的東西。看起來好像我的地圖甚至沒有檢測到點擊。目前,我試圖讓劇本儘可能的簡單,我只是想在這點在地圖上點擊檢測:GoogleMaps:設置用戶點擊標記

<script type="text/javascript"> 
    function initialize() 
    { 
     <!-- Set the initial location--> 
     var latlng = new google.maps.LatLng(44, -71); 

     <!-- initialization options --> 
     var myOptions = { 
      zoom: 8, 
      center: latlng, 
      mapTypeId: google.maps.MapTypeId.HYBRID 
     }; 

     <!-- The map variable 
     var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
     <!-- END INITIALIZE --> 
    } 
    google.maps.event.addDomListener(window, 'load', initialize); 

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

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

我已經嘗試了這種代碼變種非常多,它永遠不會工作。如果我將它更改爲「addDomListener(window,...)」,它可以工作,但從不使用地圖作爲偵聽器。想法?

編輯:好的,解決它由有些改變功能和在腳本改變其位置:

<script type="text/javascript"> 
     function initialize() { 
      <!-- Set the initial location --> 
      var latlng = new google.maps.LatLng(44, -71); 

      <!-- initialization options --> 
      var myOptions = { 
       minZoom: 3, 
       zoom: 8, 
       maxZoom: 9, 
       center: latlng, 
       mapTypeId: google.maps.MapTypeId.HYBRID 
      }; 
      <!-- The map variable--> 
      var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

      <!-- Add the functionality of placing a marker on a click--> 
      google.maps.event.addListener(map, 'click', function(event) { 
       var marker = new google.maps.Marker({ 
        position: event.latLng, 
        map: map 
        }); 
       alert('You clicked the map.'+event.latLng); 
      }); 
      <!-- END INITIALIZE --> 
     } 
     google.maps.event.addDomListener(window, 'load', initialize); 

     <!-- Add the functionality of placing a marker on a click--> 
     google.maps.event.addListener(map, 'click', function(event) { 
      var marker = new google.maps.Marker({ 
       position: event.latLng, 
       map: map 
       }); 
      alert('You clicked the map.'+event.latLng); 
     }); 
    </script> 
+0

你有沒有運行代碼,我們可以看看,說明了這個問題?或者我們可以查看所有代碼的jsfiddle? – 2012-02-03 22:53:28

+0

順便說一句,您正在代碼的第2行(即clickedLocation)中引用LatLng對象中的LatLng對象。您已經從點擊傳遞LatLng作爲locatin變量。 – andresf 2012-02-03 23:33:56

+0

好點andresf和馬諾馬克,我會更新代碼,以包括我所有的腳本 – riqitang 2012-02-04 13:42:09

回答

1

我猜你放在不適當的地方這個代碼(或做在了錯誤的時間)。最近我遇到了同樣的問題,需要一些時間來解決它。看看我的作品:

var mapservice = {}; 

mapservice.map = {}; 
mapservice.options = {}; 
mapservice.putMarker = {}; 

mapservice.init = function (divName, textSearch) 
{ 
    this.options = 
    { 
     center: new google.maps.LatLng(-34.397, 150.644), 
     zoom: 8, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    this.map = new google.maps.Map($(divName)[0], this.options); 

    google.maps.event.addListener(this.map, 'click', function (event) 
    { 
     mapservice.putMarker(event.latLng); 
    }); 
    } 
mapservice.putMarker = function (location) 
{ 
//... 
} 
+0

感謝您的答覆,這個骨架代碼(編輯,以適應我的目的)可悲地沒有工作:( – riqitang 2012-02-04 13:37:21