Имя: Пароль:
1C
1С v8
Поле HTML-документа. Получить координаты GoogleMaps.
0 Bodrug
 
06.05.19
14:34
Всем привет. На форме есть поле HTML документа. Как ПриНажатии в этом поле можно отловить координаты клика мыши? Текст поля прилагается:

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Polygon Arrays</title>
    <style>
      /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
      #map {
        height: 100%;
      }
      /* Optional: Makes the sample page fill the window. */
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>

      var map;
      var infoWindow;

      function initMap() {
          
          map = new google.maps.Map(document.getElementById('map'), {
          zoom: 14,
          center: {lat: 46.635717703759639, lng: 30.402132970052506},
          mapTypeId: 'hybrid'
        });

        var clickListener = map.addListener('click', showCoordinates);
        
        // Define the LatLng coordinates for the polygon.
        var triangleCoords = [
            %PolyCoordinates%
        ];

        // Construct the polygon.
        var myPolygon = new google.maps.Polygon({
          paths: triangleCoords,
          strokeColor: '#FF0000',
          strokeOpacity: 0.8,
          strokeWeight: 3,
          fillColor: '#FF0000',
          fillOpacity: 0.35
        });
        myPolygon.setMap(map);

        // Add a listener for the click event.
        myPolygon.addListener('click', showArrays);

        infoWindow = new google.maps.InfoWindow;
        
        var drawingManager = new google.maps.drawing.DrawingManager({
          drawingMode: google.maps.drawing.OverlayType.MARKER,
          drawingControl: true,
          drawingControlOptions: {
            position: google.maps.ControlPosition.TOP_CENTER,
            drawingModes: ['marker', 'circle', 'polygon', 'polyline', 'rectangle']
          },
          markerOptions: {icon: 'https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png'},
          circleOptions: {
            fillColor: '#ffff00',
            fillOpacity: 1,
            strokeWeight: 5,
            clickable: false,
            editable: true,
            zIndex: 1
          }
        });
        drawingManager.setMap(map);
      }
      
      
      function showArrays(event) {
        // Since this polygon has only one path, we can call getPath() to return the
        // MVCArray of LatLngs.
        var vertices = this.getPath();

        var contentString = '<b>My polygon</b><br>' +
            'Clicked location: <br>' + event.latLng.lat() + ',' + event.latLng.lng() +
            '<br>';

        // Iterate over the vertices.
        for (var i =0; i < vertices.getLength(); i++) {
          var xy = vertices.getAt(i);
          contentString += '<br>' + 'Coordinate ' + i + ':<br>' + xy.lat() + ',' +
              xy.lng();
        }

        // Replace the info window's content and position.
        infoWindow.setContent(contentString);
        infoWindow.setPosition(event.latLng);

        infoWindow.open(map);
      }
      
      function showCoordinates(event){
          //this.data = event.latLng.lat() + ',' + event.latLng.lng();
          this.isMultiLine = false;
          var contString = event.latLng.lat() + ',' + event.latLng.lng();
          infoWindow.setContent(contString);
        infoWindow.setPosition(event.latLng);

        infoWindow.open(map);
      }
      
    </script>
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?key=MyKey&libraries=drawing&callback=initMap">;
    </script>
  </body>
</html>
1 sitex
 
naïve
06.05.19
14:57
(0) ПриНажати может отработать быстрее чем код html и данных не будет.
2 Bodrug
 
06.05.19
14:59
(1) Логично. Можно ли тогда как-то реализовать передачу координат с карты в 1С?
3 sitex
 
naïve
06.05.19
15:18
(2) Можешь вывести на на самой карте в маркер или иное что то , и уже забирать с HTMLПоля
4 sitex
 
naïve
06.05.19
15:20
(2) Когда то сам пытался сделать что то подобное с Яндекс картами и без таймаута кода в ПриНажатии, координаты не попадали.
5 Bodrug
 
06.05.19
15:25
(4) Спасибо, попробую с таймаутом
6 Bodrug
 
07.05.19
09:29
(4) Таймаут не помог ((
Я нажатиями мыши рисую на карте Polygon или Rectangle. И у каждого есть свои методы получения координат вершин. У Polygon - метод GetPath(), а у Rectangle - GetBounds().
Тут дело в том, что при нажатии я получаю структуру, в которой есть огромное количество элементов (в т.ч. COM-объекты). Но непонятно куда копать, чтобы получить координаты, вызывав необходимые методы...
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой