1

我在谷歌地图中插入了一个自定义标记,但它没有准确地指向地图。我认为这主要是因为标记的指向边缘的设计。

有没有关于如何制作自定义标记的指南?

我正在使用以下库:http ://hpneo.github.com/gmaps/

在此处输入图像描述

// JavaScript Document
$(document).ready(function () {
    var map = new GMaps({
        div: '#map',
        lat: 13.00487,
        lng: 77.576729,
        zoom: 13,
    });

    map.addControl({
        position: 'top_right',
        text: 'Geolocate',
        style: {
            margin: '5px',
            padding: '1px 6px',
            border: 'solid 1px #717B87',
            background: '#fff'
        },
        events: {
            click: function () {
                GMaps.geolocate({
                    success: function (position) {
                        map.setCenter(position.coords.latitude, position.coords.longitude);
                    },
                    error: function (error) {
                        alert('Geolocation failed: ' + error.message);
                    },
                    not_supported: function () {
                        alert("Your browser does not support geolocation");
                    }
                });
            }
        }
    });

    map.addMarker({
        lat: 13.00487,
        lng: 77.576729,
        title: 'Lima',
        icon: "http://i.imgur.com/3YJ8z.png",
        infoWindow: {
            content: '<p>HTML Content</p>'
        }
    });

});
4

3 回答 3

9

你可能想要的是这样的:

var image = new google.maps.MarkerImage(
    'http://i.imgur.com/3YJ8z.png',
    new google.maps.Size(19,25),    // size of the image
    new google.maps.Point(0,0), // origin, in this case top-left corner
    new google.maps.Point(9, 25)    // anchor, i.e. the point half-way along the bottom of the image
);

map.addMarker({
    lat: 13.00487,
    lng: 77.576729,
    title: 'Lima',
    icon: image,
    infoWindow: {
        content: '<p>HTML Content</p>'
    }
});
于 2012-07-30T14:26:25.670 回答
3

据我所知,有两种基本方法可以为 Google Maps (API V3) 创建自定义标记。第一个是使用“自定义叠加”,第二个是使用“复杂图标”。两者都在Google Maps API 官方文档中进行了解释。你可以..

1.)如果要显示 HTML,请使用“自定义叠加层”

Google Map 文档示例“ Custom Overlays ”展示了如何基于 Google Maps OverlayView 类创建自己的 CustomMarker 类

CustomMarker.prototype = new google.maps.OverlayView();
CustomMarker.prototype.draw = function() {
  ..
}
overlay = new CustomMarker(..)
overlay.setMap(map);

2.)如果要显示图像,请使用“复杂图标”

Google Map 文档示例“ Complex Icons ”展示了如何使用复杂图标创建 Google Marker,即图标、阴影图像和形状(形状定义图标的可点击区域)

 var image = new google.maps.MarkerImage('images/flag.png', ..
 var shadow = new google.maps.MarkerImage('images/shadow.png', ..
 var marker = new google.maps.Marker({
    position: .., map: .., shadow: .., icon: image, shape: ..
   });
于 2013-01-03T14:18:28.467 回答
1

https://developers.google.com/maps/documentation/javascript/overlays#Icons有一个示例,语法在https://developers.google.com/maps/documentation/javascript/reference#MarkerImage进行了解释

特别是,如果自定义标记与普通 Google 标记的形状不同,则anchor需要正确设置参数。

编辑后,

看来您确实使用的是小图像,但所有内容都被视为正常大小的 Google 标记。您需要制作一个自定义标记(见上文)。

于 2012-07-30T14:25:59.370 回答