• Как сделать автоматическое позиционирование Infobox для Google map api?

    @skoval Автор вопроса
    Вы конечно извините меня, но накуй вообще нужны подобные ресурсы? за дизайн рисунок спасибо. И так сам понимал, что нужно так сделать, но я попросил примерный кусок кода, для уничтожение каши в голове.
  • Как сделать автоматическое позиционирование Infobox для Google map api?

    @skoval Автор вопроса
    freeExec, был бы признателен, за не большой кусочек примерного кода) с меня +100 в карму)
  • Как сделать автоматическое позиционирование Infobox для Google map api?

    @skoval Автор вопроса
    freeExec, а более детально? картинку не совсем понял)
  • Как сделать автоматическое позиционирование Infobox для Google map api?

    @skoval Автор вопроса
    freeExec, Я так понимаю, здесь больше отвечают с вопроса на вопрос. Впервые в жизни решил написать на подобном ресурсе, в ответ получаю вопрос, что мне мешает это сделать. А, что мешает вам не скупиться на знания, которыми не поделившись, заберете на тот свет. И уже будет все равно, сколько вы времени тратили на изучение и на сколько сложно вам они давались. Такие ресурсы я полагаю созданы, чтобы люди помогали друг другу и помогали тем кто задает адекватные вопросы, которые связаны с реальными задачами, и о них мало информации. А не для вопросов, как здесь есть:
    Типа как создать гугл карту или как сделать клик по ссылке с помощью Джиквери.
  • Как сделать автоматическое позиционирование Infobox для Google map api?

    @skoval Автор вопроса
    freeExec, Пример подобной реализации, для того, чтобы я мог сделать схожее. Не очень большой опыт в прототипах. Может кто то с таким сталкивался, неделю брожу по интернету, не могу найти. Информация есть, но очень сырая. Вот пару примеров . Один в ручную задавать, и то только для 4 точек, второй более автоматический, но второй не совсем мне понятен пример, особенно запятые после окончания каждой функции.

    getInfowindowOffset = function (map, marker) {
            var center = this.getPixelFromLatLng(map.getCenter()),
                point = this.getPixelFromLatLng(marker.getPosition()),
                quadrant = "",
                offset;
            quadrant += (point.y > center.y) ? "b" : "t";
            quadrant += (point.x < center.x) ? "l" : "r";
            if (quadrant == "tr") {
                offset = new google.maps.Size(-160, 250);
            } else if (quadrant === "tl") {
                offset = new google.maps.Size(160, 260);
            } else if (quadrant === "br") {
                offset = new google.maps.Size(-140, -30);
            } else if (quadrant === "bl") {
                offset = new google.maps.Size(160, 30);
            }
            return offset;
        };
    
        getPixelFromLatLng = function (latLng) {
            var projection = this.map.getProjection();
            var point = projection.fromLatLngToPoint(latLng);
            return point;
        };

    Второй вариант
    ourOverlay:null, createOverlay:function(){ this.ourOverlay = new google.maps.OverlayView(); this.ourOverlay.draw = function() {}; this.ourOverlay.setMap(this.map); }, 
    getInfowindowOffset: function (map, marker) { // Settings var iwWidth = 240; // InfoWindow width var iwHeight = 190; // InfoWindow Height var xOffset = 0; var yOffset = 0; // Our point of interest var location = this.ourOverlay.getProjection().fromLatLngToContainerPixel(marker.getPosition()); // Get Edges of map in pixels: Sout West corner and North East corner var swp = this.ourOverlay.getProjection().fromLatLngToContainerPixel(map.getBounds().getSouthWest()); var nep = this.ourOverlay.getProjection().fromLatLngToContainerPixel(map.getBounds().getNorthEast()); // Horizontal Adjustment if(location.x<iwWidth/2){ xOffset= iwWidth/2-location.x; }else if(location.x>nep.x-iwWidth/2){ xOffset = (nep.x-iwWidth/2)-location.x ; } // Vertical Adjustment if(location.y<iwHeight){ yOffset = location.y + iwHeight-(location.y-nep.y); } // Return it return new google.maps.Size(xOffset, yOffset); },