2017-06-12 11 views
1

Googleマップではちょっと混乱しています。私はコーディングの初心者ではありませんが、javascriptは私のベストプラクティスではありません。Googleマップ - クリック可能なマーカーを使用したマーカークラスタリング

Googleマップマーカークラスターを使用して位置をマークします。自分のデータベースから座標を取得します。しかし、私は(クリック可能な)説明(ツールチップ)を表示したい。私は自分のコードでこれを実装する方法を知りません。

私のコードは次のようになります。

function initMap(position) { 
      var map = new google.maps.Map(document.getElementById('map'), { 
       zoom: 10, 
       center: {lat: 51.1427552, lng: 8.2123375} 
      }); 
      if (navigator.geolocation) { 
       navigator.geolocation.getCurrentPosition(function (position) { 
        var pos = { 
         lat: position.coords.latitude, 
         lng: position.coords.longitude 
        }; 

        map.setCenter(pos); 
       }, function() { 
        handleLocationError(true, infoWindow, map.getCenter()); 
       }); 
      } 
      // Create an array of alphabetical characters used to label the markers. 
      var labels = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 

      // Add some markers to the map. 
      // Note: The code uses the JavaScript Array.prototype.map() method to 
      // create an array of markers based on a given "locations" array. 
      // The map() method here has nothing to do with the Google Maps API. 
      var markers = locations.map(function (location, i) { 
       console.log(location[2]); 
       return new google.maps.Marker({ 
        position: location, 
        label: labels[i % labels.length], 
       }); 

      }); 

      console.log(markers); 

      // Add a marker clusterer to manage the markers. 
      var markerCluster = new MarkerClusterer(map, markers, 
        {imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'}); 
     } 
     var locations = [{"lat":52.2885818,"lng":7.4184098,"title":"test"},{"lat":52.2756548,"lng":7.4223696,"title":"test"}] 

私はあなたが、私はこれらのツールチップを統合する方法を私に表示することができます願っています。

私はこのようなコードが見つかりました:

google.maps.event.addListener(markers,'click',function() { 
var infowindow = new google.maps.InfoWindow({ 
    content:"Hello World!" 
}); 

infowindow.open(マップ、マーカー)。 });

しかし、実装方法はわかりません。助けが夢中になるだろう。どうもありがとう!

+0

は、あなたがこれを読んでみましたがあります。https://developers.google.com/maps/documentation/javascript/examples/event-simple –

+0

はい、私の問題は私のループで – yfain

答えて

0

こんにちはyfainこのコードを試してください!

<script> 
var AllMarkers = []; 
google.maps.event.addDomListener(window, 'load', initMap); 
function initMap(position) { 
     var map = new google.maps.Map(document.getElementById('map'), { 
      zoom: 10, 
      center: {lat: 51.1427552, lng: 8.2123375} 
     }); 
     if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(function (position) { 
       var pos = { 
        lat: position.coords.latitude, 
        lng: position.coords.longitude 
       }; 

       map.setCenter(pos); 
      }, function() { 
       handleLocationError(true, infoWindow, map.getCenter()); 
      }); 
     } 
     // Create an array of alphabetical characters used to label the markers. 
     var labels = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 

     // Add some markers to the map. 
     // Note: The code uses the JavaScript Array.prototype.map() method to 
     // create an array of markers based on a given "locations" array. 
    // The map() method here has nothing to do with the Google Maps API. 

     //var markers = locations.map(function (location, i) { 
     // // console.log(location[2]); 
     // return new google.maps.Marker({ 
     //  position: location, 
     //  icon:'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m', 
     //  label: labels[i % labels.length], 
     // }); 

     //}); 
     $.each(locations, function (i, location) { 
      debugger; 
       console.log(location.lat+', '+location.lng); 
var points = { 
       lat: location.lat, 
       lng: location.lng 
      }; 
      map.setCenter(points); 
      var myLatlng = new google.maps.LatLng(location.lat, location.lng); 
      var marker = new google.maps.Marker({ 
       position: myLatlng, 
       map: map, 
       title: labels, 
       icon: 'http://maps.google.com/mapfiles/ms/icons/blue.png' 
      }); 
      AllMarkers.push(marker) 
      marker.info = new google.maps.InfoWindow({ 
       content: location.title 
       // content: labels[i % labels.length] 
     }); 
     google.maps.event.addListener(marker, 'click', function (e) { 
     marker.info.open(map, marker); 
    }); 
     }); 

     //console.log(markers); 

     // Add a marker clusterer to manage the markers. 
    // var markerCluster = new MarkerClusterer(map, markers, 
    //   {imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'}); 
    } 
var locations = [{ "lat": 30.740762, "lng": 76.783013, "title": "Loc-1" }, { "lat": 30.733532, "lng": 76.77134, "title": "Loc-2" }] 

</script> 
+0

作品を付加する機能を統合することです。ありがとう;) – yfain

関連する問題