1

ライブラリを v2 から v3 に移植しています。開発者は、マーカーに必要なカスタム アイコンを使用できますが、アイコンのサイズとアイコンのアンカー位置を取得できる必要があります。v2 を使用すると、gmaps ライブラリはそのすべてを計算して利用できるようにします。v3 では、マーカーからアイコンを取得すると、画像の URL だけを含む文字列になる可能性があります。または、開発者がコンストラクターで提供した情報だけを含む MarkerImage にすることもできます。v3 を使用して、マーカー アイコンのアイコン サイズとアンカー位置を確実に取得するにはどうすればよいですか?

// v2 way
var markerImage = new GIcon(G_DEFAULT_ICON);
markerImage.image = '/system/themes/asp/img/gmarkerA.png';

var marker = new GMarker(
    new GLatLng(35.908236, -79.024531),
    {'title':'NC',
    'icon': markerImage
    });

// get info here
var markerIcon = marker.getIcon();
var anchorX = markerIcon.iconAnchor.x
var anchorY = markerIcon.iconAnchor.y
var iconHeight = markerIcon.iconSize.height
var iconWidth = markerIcon.iconSize.width


// v3 way #1
var marker = new google.maps.Marker({
    'position': new google.maps.LatLng(35.908236, -79.024531),
    'title':'NC',
    'icon': new google.maps.MarkerImage('/system/themes/asp/img/markerA.jpg'));

// v3 way #2
var marker = new google.maps.Marker({
    'position': new google.maps.LatLng(35.908236, -79.024531),
    'title':'NC',
    'icon': '/system/themes/asp/img/markerA.jpg');

// v3 way #3
var marker = new google.maps.Marker({
    'position': new google.maps.LatLng(35.908236, -79.024531),
    'title':'NC',
    'icon': { url : '/system/themes/asp/img/markerA.jpg'}
});


var markerIcon = marker.getIcon();
// how to get anchor position and size?????
4

2 に答える 2

2

icon.anchoricon.size

例えば

var markerIcon = marker.getIcon();
var size = markerIcon.size;

これにはおそらく、単に URL 文字列を指定するのではなく、最初の方法を使用する必要があります。
注意: MarkerImage オブジェクトは非推奨です。代わりに Icon を使用してください。

var marker = new google.maps.Marker({
    'position': new google.maps.LatLng(35.908236, -79.024531),
    'title':'NC',
    'icon': { url : '/system/themes/asp/img/markerA.jpg'}
});
于 2013-01-17T15:07:23.017 に答える
0

最初にプロパティとして指定しない限り、api v3 ではその情報を取得できないと思います。有益な情報を提供するためにこれを思いつきました。他の誰かが役に立つことを願っています:

google.maps.Marker.prototype.getIconInfo = function() {
    var icon = this.getIcon();
    var size = null;
    var anchor = null;
    var image;
    var info;


    if (typeof icon == 'string')
    {
        image = new Image(); 
        image.src = icon;

        size = new google.maps.Size(image.width, image.height);
    }
    else
    {
        size = icon.size;   
        anchor = icon.anchor;   

        if (size == null)
        {
            image = new Image(); 
            image.src = icon.url;

            size = new google.maps.Size(image.width, image.height);

        }
    }

    if (anchor == null)
    {
        anchor = new google.maps.Point(Math.floor(size.width / 2 - 1), size.height);
    }

    var infoWindowAnchor = new google.maps.Point(anchor.x, 2);

    info =  {size:size, anchor:anchor, infoWindowAnchor:infoWindowAnchor};

    return info;
}
于 2013-01-18T02:38:23.897 に答える