2012-02-07 2 views
1

Если у меня есть инфобокса на картах Google, как сделать инфобокс по центру на карте? Я указываю это, чтобы центрировать карту на маркере. Но у меня есть поле richmarker переменной ширины и высоты рядом с маркером карты. Я хочу, чтобы инфобокс появился на карте.Google maps javascript API, как центрировать карту на инфобоксах

var lat_lon = new google.maps.LatLng(latitude, longitude); 
    var myOptions = { 
     zoom: 4, 
     center: lat_lon, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
    }; 

    map = new google.maps.Map(document.getElementById('map_canvas'), myOptions); 

    var marker = new google.maps.Marker({ 
     position: lat_lon, 
     map: map, 
     title: place, 
     icon: 'googlemaps/church3.png', 
     clickable: true, 
    }); 

    var mappics_dir = "mappics/"; 
    var picture_img = ""; 
    if (picture != undefined && picture != "") { 
     picture_img = '<div><img src="'+mappics_dir+picture+'" style="width: auto; height: 100px; min-width: 90px;"/></div>'; 
    } 

    marker_info = new RichMarker({ 
     position: lat_lon, 
     map: map, 
     draggable: true, 
     content: '<div class="channel_marker">' + picture_img + '<div style="width: auto;">'+place+'</div></div>', 
     flat: true, 
     anchor: RichMarkerPosition.TOP_LEFT, 
    }); 

Richmarker привязан к маркеру карты. Я хотел бы сказать карты Google api, чтобы показать богатый маркер в центре карты. Благодарю.

ответ

0
map.setCenter(lat_lon) 

... будет располагаться по центру. Если вы хотите, чтобы центр на RichMarker, вам придется сделать некоторую математику, путем получения ContainerPixel или DivPixel центра RichMarker, а затем, используя ...

MapCanvasProjection.fromContainerPixelToLatLong(pixel:Point) or MapCanvasProjection.fromDivPixelToLatLng(pixel:Point) to center on that using map.setCenter(MapCanvasProjection.fromDivPixelToLatLng(pixel:Point)), for example. 
+0

Похоже, правильный ответ. Но карты api ошибочно, когда я попытался установить центр с помощью этого кода. 'var overlay = new google.maps.OverlayView(); \t \t overlay.draw = function() {}; \t \t overlay.setMap (Карта); \t \t var map_pixel = new google.maps.Point (200,200); \t \t var pixelLatLng = overlay.getProjection() .ContainerPixelToLatLng (map_pixel); \t \t map.setCenter (pixelLatLng); ' – user823527

+0

Как насчет использования map.getProjection()? И вы уверены, что Point действителен для контейнера? –

Смежные вопросы