Google maps 可以在Google Maps API v3上编写自定义文本吗?

Google maps 可以在Google Maps API v3上编写自定义文本吗?,google-maps,google-maps-api-3,google-maps-markers,Google Maps,Google Maps Api 3,Google Maps Markers,是否可以在Google Maps API v3的标记旁边编写自定义文本,或者我只能使用“信息”窗口来执行此操作?要显示自定义文本,需要创建自定义覆盖。下面是一个改编自谷歌官方文档的示例。您还可以使用更“时尚”的信息窗口 //从这个例子中可以看出http://code.google.com/apis/maps/documentation/javascript/overlays.html#CustomOverlays //文本覆盖 函数txt覆盖(pos、txt、cls、map){ //现在初始

是否可以在Google Maps API v3的标记旁边编写自定义文本,或者我只能使用“信息”窗口来执行此操作?

要显示自定义文本,需要创建自定义覆盖。下面是一个改编自谷歌官方文档的示例。您还可以使用更“时尚”的信息窗口


//从这个例子中可以看出http://code.google.com/apis/maps/documentation/javascript/overlays.html#CustomOverlays
//文本覆盖
函数txt覆盖(pos、txt、cls、map){
//现在初始化所有属性。
this.pos=pos;
this.txt=txt;
this.cls=cls;
this.map=map;
//我们定义一个属性来保存图像的
//我们将实际创建这个div
//在收到add()方法后,我们将
//暂时将其保留为空。
this.div=null;
//在此覆盖上显式调用setMap()
这个.setMap(map);
}
TxtOverlay.prototype=新的google.maps.OverlayView();
TxtOverlay.prototype.onAdd=函数(){
//注意:覆盖层收到onAdd()表示
//地图的窗格现在可用于附着
//通过DOM覆盖到地图上。
//创建DIV并设置一些基本属性。
var div=document.createElement('div');
div.className=this.cls;
div.innerHTML=this.txt\ux;
//将覆盖的div_u属性设置为此div
this.div=div;
var overlyprojection=this.getProjection();
var position=从LatlngToDivPixel(this.pos)的过度投影;
div.style.left=位置.x+‘px’;
div.style.top=位置.y+‘px’;
//我们通过地图的一个窗格向地图添加覆盖。
var panes=this.getPanes();
窗格.floatPane.appendChild(div);
}
TxtOverlay.prototype.draw=函数(){
var overlyprojection=this.getProjection();
//检索此覆盖的西南和东北坐标
//并将其转换为像素坐标。
//我们将使用这些坐标来调整DIV的大小。
var position=从LatlngToDivPixel(this.pos)的过度投影;
var div=this.div_2;;
div.style.left=位置.x+‘px’;
div.style.top=位置.y+‘px’;
}
//可选:用于删除和切换文本覆盖的辅助方法。
TxtOverlay.prototype.onRemove=函数(){
this.div\u.parentNode.removeChild(this.div\u);
this.div=null;
}
TxtOverlay.prototype.hide=函数(){
如果(此.div){
this.div_.style.visibility=“hidden”;
}
}
TxtOverlay.prototype.show=函数(){
如果(此.div){
this.div_.style.visibility=“visible”;
}
}
TxtOverlay.prototype.toggle=函数(){
如果(此.div){
if(this.div_u2;.style.visibility==“hidden”){
this.show();
}否则{
this.hide();
}
}
}
TxtOverlay.prototype.toggleDOM=函数(){
if(this.getMap()){
此.setMap(null);
}否则{
this.setMap(this.map_);
}
}
var映射;
函数init(){
var latlng=新的google.maps.latlng(37.9069,-122.0792);
变量myOptions={
缩放:4,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
map=新的google.maps.map(document.getElementById(“map”),myOptions);
var marker=new google.maps.marker({
位置:latlng,
地图:地图,
标题:“你好,世界!”
});
customTxt=“Blah Blah sdfsdddddddddddddddddddddddddddddddd
    Blah 1
  • Blah 2
” txt=新的txt覆盖(latlng、customTxt、“customBox”、地图) } .海关信箱{ 背景:黄色; 边框:1px纯黑; 位置:绝对位置; }
到目前为止,添加文本覆盖的最简单方法是使用


如果文本是静态的,则可以使用标记和图像:

var label = new google.maps.Marker({
    position: new google.maps.LatLng(50,50),
    map: map,
    icon: "/images/mytextasanimage.png"
});
最新的(v3)API建议在加载Maps API时使用
async defer
和回调

<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"></script>

以下是工作代码:

#map {
  height: 500px;
}
html, body {
  height: 100%;
  margin: 0;
  padding: 0;
}

<div id="content">
  <div id="map"></div>
  <div class="centered">
    <h1>Text Over Maps</h1>
  </div>
</div>
#地图{
高度:500px;
}
html,正文{
身高:100%;
保证金:0;
填充:0;
}
地图上的文字

要向谷歌地图添加自定义文本,您可以使用带有空像素的标记作为图标:

new google.maps.Marker({
    position: { lat: 0, lng: 0 },
    map: map,
    icon: '../res/img/empty.png',
    label: {
        color: '#FF0000',
        fontWeight: 'bold',
        text: 'Hello World',
        fontSize: '20px',
    },
});

看,这是不可能的。。。唯一的方法是创建透明的信息框窗口并在其上写入文本。。。告诉我我是否错了?我可以在谷歌地图静态地图API中的标记上添加自定义文本(最有可能是一个单词)吗?这太棒了。我搔了搔头,想知道为什么谷歌默认不包括这个。有没有办法改变标签文本的大小?将“字体大小:30px”添加到样式块似乎不起作用。效果很好!回答得很好!它工作得很好,除了我必须添加
div.style.position='absolute'以使文本显示在正确的位置。效果很好!但是,有没有一种简单的方法将框定位在底部中间而不是左上角?我得到一个错误“UncaughtReferenceError:MapLabel未定义”,如何添加实用程序库?
但您需要使用此实用程序库
http://google-maps-utility-library-v3.googlecode.com/svn/trunk/maplabel/src/maplabel.js
@Legionar上述两个链接不起作用。请检查您提供的链接here@codelearner这两个链接都在工作,你也可以进入一个文件夹,你会看到内容和两个文件-和
#map {
  height: 500px;
}
html, body {
  height: 100%;
  margin: 0;
  padding: 0;
}

<div id="content">
  <div id="map"></div>
  <div class="centered">
    <h1>Text Over Maps</h1>
  </div>
</div>
new google.maps.Marker({
    position: { lat: 0, lng: 0 },
    map: map,
    icon: '../res/img/empty.png',
    label: {
        color: '#FF0000',
        fontWeight: 'bold',
        text: 'Hello World',
        fontSize: '20px',
    },
});