Creating Infowindows on features loaded via loadGeoJson()

后端 未结 1 1660
一个人的身影
一个人的身影 2020-12-30 08:15

I apologize if this is basic, but I have very limited javascript knowledge.

I\'m making a map that loads GeoJSON data that I created in ArcGIS reformatted to GeoJSON

1条回答
  •  不思量自难忘°
    2020-12-30 09:10

    To get the infowindow to display on a click you need to call open().

      // global infowindow
      var infowindow = new google.maps.InfoWindow();
    
      // When the user clicks, open an infowindow
      map.data.addListener('click', function(event) {
          var myHTML = event.feature.getProperty("Description");
          infowindow.setContent("
    "+myHTML+"
    "); infowindow.setPosition(event.feature.getGeometry().get()); infowindow.setOptions({pixelOffset: new google.maps.Size(0,-30)}); infowindow.open(map); });

    working fiddle

    code snippet:

    var infowindow = new google.maps.InfoWindow();
    function gotoFeature(featureNum) {
        var feature = map.data.getFeatureById(features[featureNum].getId());
        if (!!feature) google.maps.event.trigger(feature, 'changeto', {feature: feature});
        else alert('feature not found!');
    }
    
    function initialize() {
      // Create a simple map.
      features=[];
      map = new google.maps.Map(document.getElementById('map-canvas'), {
        zoom: 4,
        center: {lat: -28, lng: 137.883}
      });
        google.maps.event.addListener(map,'click',function() {
            infowindow.close();
        });
        map.data.setStyle({fillOpacity:.8});
      // Load a GeoJSON from the same server as our demo.
      var featureId = 0;
      google.maps.event.addListener(map.data,'addfeature',function(e){
          if(e.feature.getGeometry().getType()==='Polygon'){
              features.push(e.feature);
              var bounds=new google.maps.LatLngBounds();
              
              e.feature.getGeometry().getArray().forEach(function(path){
              
                 path.getArray().forEach(function(latLng){bounds.extend(latLng);})
              
              });
              e.feature.setProperty('bounds',bounds);
              e.feature.setProperty('featureNum',features.length-1);
              
              
            
            }
      });
      // When the user clicks, open an infowindow
      map.data.addListener('click', function(event) {
              var myHTML = event.feature.getProperty("Description");
          infowindow.setContent("
    "+myHTML+"
    "); infowindow.setPosition(event.feature.getGeometry().get()); infowindow.setOptions({pixelOffset: new google.maps.Size(0,-30)}); infowindow.open(map); }); map.data.addGeoJson(googleJSON); } google.maps.event.addDomListener(window, 'load', initialize); var googleJSON = { "type": "FeatureCollection", "features": [ { "id":0, "type": "Feature", "properties": { "letter": "G", "color": "blue", "rank": "7", "ascii": "71", "Description": "the letter G" }, "geometry": { "type": "Point", "coordinates": [123.61, -22.14] } }, { "id":1, "type": "Feature", "properties": { "letter": "o", "color": "red", "rank": "15", "ascii": "111", "Description": "the first letter o" }, "geometry": { "type": "Point", "coordinates": [128.84, -25.76] } }, { "id":2, "type": "Feature", "properties": { "letter": "o", "color": "yellow", "rank": "15", "ascii": "111", "Description": "the second letter o" }, "geometry": { "type": "Point", "coordinates": [131.87, -25.76] } }, { "id":3, "type": "Feature", "properties": { "letter": "g", "color": "blue", "rank": "7", "ascii": "103", "Description": "the letter g" }, "geometry": { "type": "Point", "coordinates": [138.12, -25.04] } }, { "id":4, "type": "Feature", "properties": { "letter": "l", "color": "green", "rank": "12", "ascii": "108", "Description": "the letter l" }, "geometry": { "type": "Point", "coordinates": [140.14,-21.04] } }, { "id":5, "type": "Feature", "properties": { "letter": "e", "color": "red", "rank": "5", "ascii": "101", "Description": "the letter e" }, "geometry": { "type": "Point", "coordinates": [144.14, -27.41] } } ] };
    html, body, #map-canvas {
            height: 100%;
            margin: 0px;
            padding: 0px
    }
    
    

    0 讨论(0)
提交回复
热议问题