El método para agregar una capa al terreno en Google Map API 2.0 es map.addOverlay() y luego el método equivalente en Google Map API 3.0;
Para responder primero a la última pregunta, parece que LatLng ya no proporciona el método distanciaDesde.
Pero puedes calcular esto tú mismo usando la fórmula:
d=111.12cos{1/[sinΦAsinΦB十cosΦAcosΦBcos(λB—λA)]}
Entre ellos A La longitud y latitud del punto B son λA y ΦA respectivamente, la longitud y latitud del punto B son λB y ΦB respectivamente, y d es la distancia.
Pregunta anterior:
Según la documentación, para crear una superposición personalizada:
Establezca el prototipo del objeto personalizado en google. Una nueva instancia de maps.OverlayView. (). Esto permite efectivamente la "subclasificación" de la clase superpuesta.
Cree un constructor para la superposición personalizada y establezca todos los parámetros de inicialización en el constructor en propiedades personalizadas.
Implemente el método onAdd() en el prototipo para adjuntar la superposición al mapa. Cuando el mapa está listo para adjuntar una superposición, se llama a OverlayView.onAdd().
Implemente el método draw() en el prototipo para manejar la visualización del objeto. Del mismo modo, el sistema llama a OverlayView.draw() después de que se muestra el objeto por primera vez.
También debes implementar el método onRemove() para limpiar cualquier elemento agregado a la superposición.
Ejemplo específico (escrito por mí, con algunos comentarios):
NameOverlay.prototype = new google.maps.OverlayView() // Extender OverlayView
función inicializar() {
...
var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
var nameView = new NameOverlay(point, name, map); // Crea una nueva capa NameOverlay y agrégala al mapa actual, y pasa los parámetros punto y nombre.
}
función NameOverlay(punto, nombre, mapa) {
// Inicialización, anota todos los parámetros (punto, nombre, mapa)
this.point_ = punto;
this.name_ = nombre;
this.map_ = mapa
this.div_ = null; / Defina un div que se insertará en la página actual en onAdd.
this.setMap(map); // Esto probablemente sea similar al addOverlay original
}
NameOverlay.prototype.onAdd = function() {
p>
// Crear capa DIV
var div = document.createElement('DIV');
div.style.borderStyle = "none ";
p>div.style.borderWidth = "0px";
div.style.position = "absolute";
// Aquí está el contenido real, solo en el ejemplo Establezca un elemento span para mostrar el texto del nombre
var text = document.createElement("span");
text.nodeValue = name_;
div.appendChild (texto);
this.div_ = div;
// Agregar al mapa actual
var panes = this.getPanes ();
panes.overlayImage.appendChild(div);
}
NameOverlay.prototype.draw = function() {
// Usar proyección para convertir latitud y longitud a coordenadas xy
var overlayProjection = this.getProjection();
var center = overlayProjection.fromLatLngToDivPixel(this.point_); p>
// Configuración El tamaño y la posición de la capa
var div = this.div_
div.style.left = center.x 'px'; /p>
div.style .top = center.y 'px';
div.style.width = '100px'; 10px';
}
NameOverlay.prototype.onRemove = function() {
this.div_.parentNode.removeChild(this.div_ ); p>
this.div_ = null;
}