УФ + google maps. Белое поле. Карта не отображается.

1. Sheff 27.11.18 16:17 Сейчас в теме
Доброго времени.
Платформа 1C:Enterprise 8.3 (8.3.10.2561), УФ.

Внешняя обработка, код HTML для вызова гугл карт на форме обработки (в поле HTML документа) такой:

<ht ml>
<head>
<met a http-equiv="X-UA-Compatible" content="IE=11">
</head>
<sc ript type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=<КлючAPI>&callback=initMap"></sc ript>
<sc ript type="text/javascript">
var latlng;
var markers = [];
var myMap;
var index = 1;
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var infoWindow = new google.maps.InfoWindow;
var clusterer, mcOptions;
var trafficLayer = new google.maps.TrafficLayer();
var trafficOn = false;
var noclick = false;
var PointArray = [];
var polygons = [];

function initMap() {
directionsDisplay = new google.maps.DirectionsRenderer();
latlng = new google.maps.LatLng(41.69, 44.79);
var myOptions = {
zoom: 11,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
disableDoubleClickZoom: true,
panControl: true,
zoomControl: true,
mapTypeControl: true,
scaleControl: true,
streetViewControl: true,
overviewMapControl: true
};
myMap = new google.maps.Map(document.getElementById("map"),
myOptions);

google.maps.event.addListener(myMap, 'dragend', function() {
noclick = true;
document.getElementById('CoordX').value = "0";
document.getElementById('CoordY').value = "0";
});

google.maps.event.addListener(myMap, 'click', function(event) {
infoWindow.close();
if (!noclick) {
addMarker(event.latLng);
}else{
noclick = false;
}
});

};

</sc ript>
<body on load="initMap()">
<div id="map" style="width:100%; height:100%"></div>
<input type="hidden" id="CoordX" name="CoordX" value="0"></input>
<input type="hidden" id="CoordY" name="CoordY" value="0"></input>
<input type="hidden" id="RouteInfo" name="RouteInfo" value=""></input>
<input type="hidden" id="WebClientOperation" name="WebClientOperation" value="0"></input>
<input type="hidden" id="WebClient" name="WebClient" on click="WebClientClick();"></input>
</body>
</html>

При этом на обработке белое поле и ничего не происходит.

Ключ DWORD: 1Cv8c.exe с параметром - HEX: 2AF8 или десятичное значение: 11000 - добавил.

Подскажите, коллеги, что делаю не так, куда копать?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Maikroft 13.12.18 18:04 Сейчас в теме
Решение не нашли?
Я сам уже перепробовал все, что возможно.
3. Nigmatul 14.12.18 15:53 Сейчас в теме
<!DO CTYPE html>
<ht ml>
<head>
<met a name="viewport" content="initial-scale=1.0, user-scalable=no" />
<met a http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<met a http-equiv="X-UA-Compatible" content="IE=11">
<st yle type="text/css">
  html { height: 100% }
  body { height: 100%; margin: 0px; padding: 0px }
  #map { height: 100% }
</style>
<sc ript type="text/javascript" src="http://maps.google.com/maps/api/js?v=3.9&sensor=false"></sc ript>
<sc ript src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></sc ript>
<sc ript type="text/javascript" src="http://www.sitedev.by/lab/markerclusterer/markerclusterer.js"></sc ript>
<sc ript type="text/javascript">
	var latlng;
	var markers = [];
	var myMap;
	var index = 1;
	var directionsDisplay;
	var directionsService = new google.maps.DirectionsService();
	var infoWindow = new google.maps.InfoWindow;
	var clusterer, mcOptions;
	var trafficLayer = new google.maps.TrafficLayer();
	var trafficOn = false;
	var noclick = false;
	var PointArray = [];
	var polygons = [];

  	function initialize() {
  		directionsDisplay = new google.maps.DirectionsRenderer();
		latlng = new google.maps.LatLng(55.75, 37.62);
	  	var myOptions = {
		  zoom: 12,
		  center: latlng,
		  mapTypeId: google.maps.MapTypeId.ROADMAP,
		  disableDoubleClickZoom: true,
		  panControl: true,
		  zoomControl: true,
		  mapTypeControl: true,
		  scaleControl: true,
		  streetViewControl: true,
		  overviewMapControl: true
		};
		myMap = new google.maps.Map(document.getElementById("map"),
	       myOptions);
	       
	    google.maps.event.addListener(myMap, 'dragend', function() {
        	noclick = true;			
			document.getElementById('CoordX').value = "0";
			document.getElementById('CoordY').value = "0";  
        });
        
        google.maps.event.addListener(myMap, 'click', function(event) {
	    	infoWindow.close();
	    	if (!noclick) {
				addMarker(event.latLng);
	      	}else{
	      		noclick = false;
	      	}
	    });          
	    
	    mcOptions = {gridSize: 3, maxZoom: 15};
	    clusterer = new MarkerClusterer(myMap, markers, mcOptions);
	    
	    //отображение кнопки управления трафиком - все спер с примера, только подцепил свою функцию
	    var trafficControlDiv = document.createElement('div');
        
        trafficControlDiv.style.padding = '5px';

        // Set CSS for the control border
        var controlUI = document.createElement('div');
        controlUI.style.backgroundColor = 'white';
        controlUI.style.borderStyle = 'solid';
        controlUI.style.borderWidth = '2px';
        controlUI.style.cursor = 'pointer';
        controlUI.style.textAlign = 'center';
        controlUI.title = 'нажмите для вкл/выкл трафика';
        trafficControlDiv.appendChild(controlUI);

        // Set CSS for the control interior
        var controlText = document.createElement('div');
        controlText.style.fontFamily = 'Arial,sans-serif';
        controlText.style.fontSize = '12px';
        controlText.style.paddingLeft = '4px';
        controlText.style.paddingRight = '4px';
        controlText.innerHTML = 'Трафик';
        controlUI.appendChild(controlText);

        google.maps.event.addDomListener(controlUI, 'click', function (){
			if (!trafficOn){
				trafficOn = true;
				trafficLayer.setMap(myMap);
			}else{
				trafficOn = false;
				trafficLayer.setMap(null);
			}
			});

        trafficControlDiv.index = 1;
        myMap.controls[google.maps.ControlPosition.TOP_RIGHT].push(trafficControlDiv);
	};
  
	//добавляем маркер и отправляем в массив
	function addMarker(location) {
		marker = new google.maps.Marker({
			position: location,
			map: myMap,
			title: 'Точка'+index
		});
		infoWindow.setContent(marker.title);
        infoWindow.open(myMap, marker);
		
		google.maps.event.addListener(marker, 'click', function(){
			 var mark = this;
		     var latLng = mark.getPosition();
		     infoWindow.setContent(mark.title);
             infoWindow.open(myMap, mark);});
		
		markers.push(marker);
		index++;
		
		document.getElementById('CoordX').value = location.lat();
		document.getElementById('CoordY').value = location.lng();
	}
	
	function calcRoute(options) {
	  //вытягиваем из массива переданных параметров значения
	  //и преобразуем их в формат LatLng
	  var option1 = options[0];//начальная точка 
	  var option2 = options[1];//промежуточные точки
	  var option3 = options[2];//конечная точка
	  var start = new google.maps.LatLng(option1[0], option1[1]);  //первый
	  var end = new google.maps.LatLng(option3[0], option3[1]); //последний
	  //получаем транзитные точки
	  var waypts = [];
	  if(option2.length > 0) {
	  	for(var i = 0, l = option2.length; i < l; i++) {
	  		temp = option2[i]; 
			Qcoord = new google.maps.LatLng(temp[0], temp[1])
			waypts.push({
	          location:Qcoord,
	          stopover:true
	      });
		} 
	  }	 
	  //return;
	  var request = {
	      origin: start,
	      destination: end,
	      waypoints: waypts,
	      optimizeWaypoints: true,
	      travelMode: google.maps.TravelMode.DRIVING
	  };
	  directionsService.route(request, function(response, status) {
	    if (status == google.maps.DirectionsStatus.OK) {
	    	directionsDisplay.setMap(myMap);
	    	directionsDisplay.setDirections(response);
	      
	    	var total = 0; 
		    var myroute = response.routes[0];
		 
		    for (i = 0; i < myroute.legs.length; i++) {		 
		      total += myroute.legs[i].distance.value;		 
		    }
		  	total = total / 1000;
		  	document.getElementById('RouteInfo').value = "Длина маршрута - " + total + "км.";
	        
	        //генерация события для перехвата в 1С
	        var evt = document.createEventObject();
	  		document.body.fireEvent('ondatasetcomplete', evt);
	    }else{
	    	alert(status);
	    }
	  });
	}
	
	function Reset(){
		directionsDisplay.setMap(null);
		for (var i = 0; i < markers.length; i++) {
          markers[i].setMap(null);
        }
		markers = [];
		index = 1;
		
		//обнуляем кластер маркеров
		clusterer.clearMarkers();
		
		for (var i = 0; i < polygons.length; i++) {
          polygons[i].setMap(null);
        }
		polygons = [];
		PointArray = [];
	}
	
	function FindAdres(Adres){
		Reset();
		var geocoder = new google.maps.Geocoder();
	    geocoder.geocode( { 'address': Adres}, function(results, status) {
	      if (status == google.maps.GeocoderStatus.OK) {
	        latlng = results[0].geometry.location;
			myMap.panTo(latlng);
			
			 marker = new google.maps.Marker({
	            map: myMap,
	            position: latlng,
	            animation: google.maps.Animation.BOUNCE,
	            title:Adres
	        });
	        
	        markers.push(marker);
	        
	        infoWindow.setContent(marker.title);
        	infoWindow.open(myMap, marker);
	      } else {
	        alert("Ничего не найдено: " + status);
	      }
	    });
	}
	
	function ReverseSearchAdres(CoordX, CoordY, Adres){
		Reset();
		latlng = new google.maps.LatLng(CoordX, CoordY);
		myMap.panTo(latlng);
		
		var marker = new google.maps.Marker({
	        map: myMap,
            position: latlng,
            animation: google.maps.Animation.BOUNCE,
            title:Adres
        });
        
        markers.push(marker);
        
        infoWindow.setContent(marker.title);
        infoWindow.open(myMap, marker);
	}
	
	function addToPointArray(CoordX, CoordY, ID, IconT, Text){
		var latLng = new google.maps.LatLng(CoordX, CoordY);
	  	var point = new google.maps.Marker({'position': latLng, title: Text,  icon: IconT});
	  	PointArray.push(point);
	}
	
	function drawCluster(){
		clusterer.addMarkers(PointArray);
		//myMap.geoObjects.add(clusterer);
	}	
	
	function createPolygon(ArrayPoint, Name, color) {
		//создаем массив координат вершин многоугольника
		var paths = [];
		for(var i = 0, l = ArrayPoint.length; i < l; i++) {
	  		var temp = ArrayPoint[i]; 
			Qcoord = new google.maps.LatLng(temp[0], temp[1])
			paths.push(Qcoord);
		};
	
		// Создаем многоугольник
		myPolygon = new google.maps.Polygon({
		    paths: paths,
		    strokeColor: color,
		    strokeOpacity: 0.6,
		    strokeWeight: 5,
		    fillColor: "#0000FF"
		  });
                    
        myPolygon.setMap(myMap);
        polygons.push(myPolygon);
    }
    
    function WebClientClick() {
    	//очистка перед кликом координат, иначе после клика в упр. формах идет считывание координат
    	document.getElementById('CoordX').value = "0";
		document.getElementById('CoordY').value = "0";
    	
    	var WebClientOperation = document.getElementById("WebClientOperation").value;
		//alert(WebClientOperation);
		switch (WebClientOperation) {
        	case "0":   // ничего не делаем
        	   var a = 1; 
        	default:   // запускаем функцию
        	    eval(WebClientOperation);
        }
        document.getElementById('WebClientOperation').value = "0";
	}
</sc ript>
</head>

<body on load="initialize()">
    <div id="map" style="width:100%; height:100%"></div>
    <input type="hidden" id="CoordX" name="CoordX" value="0"></input>
    <input type="hidden" id="CoordY" name="CoordY" value="0"></input>
    <input type="hidden" id="RouteInfo" name="RouteInfo" value=""></input>
    <input type="hidden" id="WebClientOperation" name="WebClientOperation" value="0"></input>
    <input type="hidden" id="WebClient" name="WebClient" on click="WebClientClick();"></input>
</body>

</html>
Показать
4. frkbvfnjh 787 23.02.24 10:26 Сейчас в теме
На 21/02/2023 точно такая же история - карта гугл не открывается ни водной 1Ске, вне зависимости от версии и типа приложения (управляемое/ не управляемое). Что делать?
5. Nigmatul 28.03.24 20:24 Сейчас в теме
высота, попробуйте открыть через браузер свой html и через отладку поменяйте высоту бокса
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот