Imagenes como mapas...
Imagenes como mapas...
Hola, buena noche. Soy nuevo en el foro. Tengo una pregunta que hacer, ojala y puedan ayudarme. Es posible utilizar imagenes de mapas dentro de un programa para que al apuntar a una zona pueda relacionarlo con algunos datos de una base de datos? Gracias
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Imagenes como mapas...
Bienvenido al foro!
Te refieres a mapas de calles (tipo callejero) ó de áreas (tipo mapa mundi) ?
Si es al primero, busca por google maps en estos foros.
Para el segundo, lo mas sencillo es usar dos imágenes, una a todo detalle, y otra con colores iguales para marcar las areas. Se detecta en donde se ha pulsado en el primero, y se obtiene el color en el segundo (GetPixel()) y por el color se busca en una DBF, array, etc.
Te refieres a mapas de calles (tipo callejero) ó de áreas (tipo mapa mundi) ?
Si es al primero, busca por google maps en estos foros.
Para el segundo, lo mas sencillo es usar dos imágenes, una a todo detalle, y otra con colores iguales para marcar las areas. Se detecta en donde se ha pulsado en el primero, y se obtiene el color en el segundo (GetPixel()) y por el color se busca en una DBF, array, etc.
Re: Imagenes como mapas...
Muchas gracias Antonio, me refiero a algo parecido a lo que hacen en este sitio: http://www.guianet.info/index.php?f=d&IdD=8
Yo no tengo mucha experiencia, sabes donde puedo encontrar un ejemplo de esto para guiarme de ahi.
Saludos!!!
Yo no tengo mucha experiencia, sabes donde puedo encontrar un ejemplo de esto para guiarme de ahi.
Saludos!!!
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Imagenes como mapas...
Ese tipo de mapa lo puedes hacer con dos imagenes (la que se ve, y otra con colores por areas, que no se ve) y luego usando polipolygon() para pintar los poligonos, cuyas coordanadas tienes que tener almacenadas en una DBF, etc.
A ver si podemos prepararte un ejemplo pronto,
A ver si podemos prepararte un ejemplo pronto,
Re: Imagenes como mapas...
Gracias!!!, ojala y pueda ver un ejemplo básico y de ahi yo le sigo. Saludos!!!!
-
- Posts: 325
- Joined: Sun Feb 03, 2008 11:04 pm
- Location: Argetnina
Re: Imagenes como mapas...
Me interesa este tema
me pasan el ejemplo
gracias
david
argentina
me pasan el ejemplo
gracias
david
argentina
Re: Imagenes como mapas...
Si, claro David, si Antonio me hace el favor de orientarme con gusto. Saludos!!!
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Imagenes como mapas...
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Imagenes como mapas...
Aqui teneis el codigo fuente de TestMap.prg y TestMap.rc:
TestMap.prg
TestMap.rc
Podeis descargar estos ficheros, los bitmaps y el EXE desde:
http://www.fivetechsoft.com/files/utilities/testmap.zip
TestMap.prg
Code: Select all
#include "FiveWin.ch"
function Main()
local oDlg, oHand, oBmp1
DEFINE CURSOR oHand HAND
DEFINE DIALOG oDlg RESOURCE "Test"
REDEFINE BITMAP oBmp1 ID 110 OF oDlg FILENAME "visible.bmp"
oBmp1:oCursor = oHand
oBmp1:bLClicked = { | nRow, nCol | MsgInfo( GetArea( GetColor( nRow, nCol, oBmp1 ) ) ) }
ACTIVATE DIALOG oDlg CENTERED
return nil
function GetColor( nRow, nCol, oBmp )
local hDC := CreateCompatibleDC( oBmp:GetDC() )
local hBmp := ReadBitmap( 0, "oculto.bmp" )
local hOldBmp := SelectObject( hDC, hBmp )
local nRGBColor := GetPixel( hDC, nCol, nRow )
SelectObject( hDC, hOldBmp )
DeleteObject( hBmp )
DeleteDC( hDC )
oBmp:ReleaseDC()
return nRGBColor
function GetArea( nRGBColor )
do case
case nRGBColor == 5026082
return "pasillo exterior"
case nRGBColor == 65535 .or. nRGBColor == 62207
return "edificio social"
case nRGBColor == 2366701
return "zona D"
case nRGBColor == 1959605
return "zona C"
case nRGBColor == 15245824
return "zona A"
case nRGBColor == 12632256
return "zona F"
case nRGBColor == 13387839
return "zona G"
otherwise
return Str( nRGBColor ) + ", no definido aun en la funcion GetArea()"
endcase
return nil
Code: Select all
test DIALOG 17, 36, 186, 147
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "TestMap"
FONT 8, "MS Sans Serif"
{
CONTROL "", 110, "TBitmap", WS_CHILD | WS_VISIBLE, 5, 5, 175, 120
}
http://www.fivetechsoft.com/files/utilities/testmap.zip
Re: Imagenes como mapas...
Muchas gracias, bajare el programa y hare pruebas. Pero tengo la duda. Las imagenes que utilizare son amorfas, es decir, no son geometricas como cualquier mapa.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Imagenes como mapas...
No importa como sean las imagenes. Lo unico que hace falta es que tengas una imagen coloreada por zonas, para asi reconocer las zonas.
Es decir, podrias tener una foto con millones de colores y esa misma foto con colores unicos para marcar cada zona.
Es decir, podrias tener una foto con millones de colores y esa misma foto con colores unicos para marcar cada zona.
Re: Imagenes como mapas...
Hola Antonio:Antonio Linares wrote:Aqui teneis el codigo fuente de TestMap.prg y TestMap.rc:
Una bella muestra del "Genio" que todos los perezosos llevamos dentro.
Muchas gracias.
Manuel Mercado.
manuelmercado at prodigy dot net dot mx
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
Re: Imagenes como mapas...
Muy buen ejemplo.
Re: Imagenes como mapas...
Antonio,
Interessante este exemplo
Mudei ele um pouco para mostar o texto e cor da area apontada:
Interessante este exemplo
Mudei ele um pouco para mostar o texto e cor da area apontada:
Code: Select all
#include "FiveWin.ch"
function Main()
local oDlg, oHand, oBmp1, osay
DEFINE CURSOR oHand HAND
DEFINE DIALOG oDlg RESOURCE "Test"
REDEFINE SAY osay ID 3 of oDlg
REDEFINE BITMAP oBmp1 ID 110 OF oDlg FILENAME "visible.bmp"
oBmp1:oCursor = oHand
oBmp1:bLClicked = { | nRow, nCol | MsgInfo( GetArea( GetColor( nRow, nCol, oBmp1 ) ) ) }
oBmp1:bMMoved = { | nRow, nCol | ( osay:settext( GetArea( GetColor( nRow, nCol, oBmp1 ) ) ), ;
osay:setcolor( rgb(0,0,0), GetColor( nRow, nCol, oBmp1 ) ) ) }
ACTIVATE DIALOG oDlg CENTERED
return nil
function GetColor( nRow, nCol, oBmp )
local hDC := CreateCompatibleDC( oBmp:GetDC() )
local hBmp := ReadBitmap( 0, "oculto.bmp" )
local hOldBmp := SelectObject( hDC, hBmp )
local nRGBColor := GetPixel( hDC, nCol, nRow )
SelectObject( hDC, hOldBmp )
DeleteObject( hBmp )
DeleteDC( hDC )
oBmp:ReleaseDC()
return nRGBColor
function GetArea( nRGBColor )
do case
case nRGBColor == 5026082
return "pasillo exterior"
case nRGBColor == 65535 .or. nRGBColor == 62207
return "edificio social"
case nRGBColor == 2366701
return "zona D"
case nRGBColor == 1959605
return "zona C"
case nRGBColor == 15245824
return "zona A"
case nRGBColor == 12632256
return "zona F"
case nRGBColor == 13387839
return "zona G"
otherwise
return Str( nRGBColor ) + ", no definido aun en la funcion GetArea()"
endcase
return nil
Code: Select all
// 186, 147
test DIALOG 17, 36, 186, 147
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "TestMap"
FONT 8, "MS Sans Serif"
{
LTEXT " ", 3, 3, 7, 170, 10
CONTROL "", 110, "TBitmap", WS_CHILD | WS_VISIBLE, 5, 20, 175, 120
CONTROL "", 120, "TBitmap", WS_CHILD | WS_VISIBLE, 5, 150, 175, 120
}
Obrigado, Regards, Saludos
Rossine.
xHarbour comercial (xAcc) -> Testando harbour + bcc / msvc
fwh 9.05
Windows XP SP2
Rossine.
xHarbour comercial (xAcc) -> Testando harbour + bcc / msvc
fwh 9.05
Windows XP SP2
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Re: Imagenes como mapas...
Antonio,
Simplemente espectacular !!!!
Sole tengo una pregunta al respecto : Se puede manejar de igual forma usando JPGs ?
Ya que la idea que traigo en mente, utilizaria imagenes un poco mas grandes y ya sabes como pesan los BMPs.
Y ya que se maneja por pares, aun mas.
Saludos
Simplemente espectacular !!!!
Sole tengo una pregunta al respecto : Se puede manejar de igual forma usando JPGs ?
Ya que la idea que traigo en mente, utilizaria imagenes un poco mas grandes y ya sabes como pesan los BMPs.
Y ya que se maneja por pares, aun mas.
Saludos
FWH 10.6 + xHarbour + Borland 582