6

Sé que google maps tiene marcadores para resaltar ciertos puntos en el mapa. Por algún motivo, no me siento cómodo colocando este tipo de mapa en mi sitio y me encantan los efectos del mapa jvector. Pero no puedo descifrar cómo definir marcadores en jVectorMap, ¿alguien tiene una pista sobre cómo definir los marcadores en jVectorMap y resaltar esos puntos? También me gustaría saber cómo llegarías al cierto punto en jVector Map utilizando la latitud y la longitud.Cómo localizar una latitud y longitud con jVector Map Plugin

Gracias.

+0

Podría editar el título, la pregunta no está relacionada con google maps vs jvectormap. Esto confundirá a las personas que buscan una comparación. –

Respuesta

5

Ahora usted puede hacer eso, la nueva versión de jVectorMap (0.2) presenta tales características con markers parámetro. Consulte la demostración aquí http://jvectormap.com/examples/markers-world/.

+0

Gracias. ¿Está generando marcadores como svg? ¿No podemos agregar nuestros propios marcadores como imágenes personalizables? – defau1t

+0

Desafortunadamente no en la versión actual. – bjornd

0

Un mapa jvector es solo eso, un mapa vectorial. Debería crear algún tipo de correspondencia entre lat/lng y su espacio vectorial (p. Ej .: 1px = 1deg). Esto requerirá personalizar el mapa o hacer algunas medidas precisas para establecer la escala. Sin mencionar que necesitarás estar seguro de que estás usando un mercator projection para que las líneas paralelas sigan significando lo que piensas que significan;)

EDITAR: Si tienes un problema con los mapas de Google, te recomendaría usar una alternativa como leaflet, sin tratar de extender el mapa de jVector para hacer dos cosas (trazar puntos y dibujar a escala) que no estaba destinado a hacer.

3

El mapa mundial jVectorMap utiliza la proyección van der Grinten. La fórmula para convertir desde/al mapa se puede encontrar en este artículo Wikipedia y Wolfram.

Deberá escalarlo al tamaño de su mapa & offset, dada la fórmula anterior proyecta la cuadrícula cartesiana long/lat (-180 a 180 deg) a (-1 a +1).

Además, los ángulos en la fórmula deben ser en radianes, no en grados.

function vanDerGrinten(lat, lng) { 
    lat = lat * Math.PI/180; 
    lng = lng * Math.PI/180; 
    var lng0 = 0; 
    var A1 = 0.5 * Math.abs((Math.PI/(lng - lng0) - (lng - lng0)/Math.PI)); 
    var phi = Math.asin(Math.abs(2 * lat/Math.PI)); 
    var G = Math.cos(phi)/(Math.sin(phi) + Math.cos(phi) - 1); 
    P = G * (2/Math.sin(phi) - 1); 
    Q = A1 * A1 + G; 
    x0 = A1 * A1 * (G - P * P) * (G - P * P) - (P * P + A1 * A1) * (G * G - P * P); 
    x1 = (A1 * (G - P * P) + Math.sqrt(x0)); 
    x2 = (P * P + A1 * A1); 
    x = sgn(lng - lng0) * Math.PI * x1/x2; 
    y = sgn(lat) * Math.PI * Math.abs(P * Q - A1 * Math.sqrt((A1 * A1 + 1) * (P * P + A1 * A1) - Q * Q))/(P * P + A1 * A1); 
    return { _x: x, _y: y }; 
} 
Cuestiones relacionadas