获取标记坐标到MAP

时间:2011-08-29 10:27:12

标签: javascript google-maps-api-3

我尝试将标记坐标添加到地图或窗口,以便在用鼠标修改时设置特殊功能,我的测试代码如下:

        var multiMarker = [];
    var xmyOptions = { // Ponemos unas coordenadas iniciales al mapa de google maps.
      zoom: 16, 
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    var xmap = new google.maps.Map($('#map_canvas2').get(0), xmyOptions); // Iniciamos el mapa indicando el Div donde se va a cargar y las opciones.

    for (x=0; x<9; x++) {

        multiMarker[x] = new google.maps.Marker({ // Definimos una nueva "marca" o puntero
            position: new google.maps.LatLng('40.' + Math.floor(Math.random()*99999999), '-3.' + Math.floor(Math.random()*99999999)),
            draggable: true,
            map: xmap,
            title: 'Ejemplo marcador arrastrable'
        });

        google.maps.event.addListener(multiMarker[x], 'mouseover', function(){
            console.log(this);
        });

    }

    var bounds = new google.maps.LatLngBounds();  
    for (index in multiMarker) {  
        var data = multiMarker[index];  
        bounds.extend(new google.maps.LatLng(data.position.Oa, data.position.Pa));  
    }  
    xmap.fitBounds(bounds); 

问题是我无法在marker [x]对象中获取此坐标,我只能看到纬度和经度,我需要标记的顶部,左侧,底部或右侧位置来设置特殊的浮动工具提示。 API没有这个信息吗?

感谢。

1 个答案:

答案 0 :(得分:0)

我在这里回答了类似的问题:How to access Google Maps API v3 marker's DIV and its pixel position?

您可以得到的是标记在世界坐标中的位置,然后转换为可见矩形左上角的偏移量。但它是唯一的位置,您无法访问标记本身,因此您无法向其添加事件或以这种方式更改标记div。

var scale = Math.pow(2, map.getZoom());
var nw = new google.maps.LatLng(
    map.getBounds().getNorthEast().lat(),
    map.getBounds().getSouthWest().lng()
);
var worldCoordinateNW = map.getProjection().fromLatLngToPoint(nw);
var worldCoordinate = map.getProjection().fromLatLngToPoint(marker.getPosition());
var pixelOffset = new google.maps.Point(
    Math.floor((worldCoordinate.x - worldCoordinateNW.x) * scale),
    Math.floor((worldCoordinate.y - worldCoordinateNW.y) * scale)
);

如果由于某种原因你需要访问marker的div,那么你需要检查为map创建了什么div,选择在哪一层(标记在一层,但我不记得哪一个,不要混淆它们)用标记阴影:-))然后以某种方式检查这个div有哪个位置,选择你需要的位置。