Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1972444
  • 博文数量: 356
  • 博客积分: 8284
  • 博客等级: 中将
  • 技术积分: 4580
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-15 20:25
个人简介

天行健,君子以自强不息

文章分类

全部博文(356)

文章存档

2018年(1)

2016年(4)

2015年(13)

2014年(14)

2013年(2)

2012年(25)

2011年(43)

2010年(65)

2009年(189)

分类: C/C++

2012-01-15 14:13:08

我采用的方式比较笨,是直接修改地图的html文件中设定坐标的语句,将坐标值进行修改,保存。再重新打开网页文件。
html文件的源代码如下:
    "">

 
   
    Google map JavaScript API eg: map mark
   
   
 
 
   

 
下面对结果重要的部分进行说明:
1、var map = new GMap2(document.getElementById("map_canvas"));//*
这里的‘*’很重要,因为下面在vc中也是通过定位到‘*’字符,最后成功定位到map.setCenter(new GLatLng(31.0326,113.7972),14);这句话,最后成功修改坐标值项。达到打开定点地图界面的作用。
2、vc中初始化时,地图文件的载入
m_map.Navigate(_T(");
由于事先是将Google-earth.html文件是存放在D盘的根目录下,所以这里的路径这样设置。
3、点击按钮1切换到坐标点1区域
void Cgoogle_mapDlg::OnBnClickedButton1()
{
 // TODO: 在此添加控件通知处理程序代码、
 char sRead[3000];
 char new_pos[]="30.3323,112.2029";
 char s_search1='*';
 //读地图文件到缓冲区中
 CFile mfile(_T("D:\Google-earth.html"),CFile::modeRead);
 if (mfile.GetLength()<2)
 {
  return;
 }
    int f_size=mfile.GetLength();
 mfile.Read(sRead,f_size);
 mfile.Close();
    //修改缓冲区中的坐标数据
 for(int i=0;i {
  if (sRead[i]=='*')
  {
   m_length=i;
   for (int j=0;j<14;j++)
   {
    sRead[i+37+j]=new_pos[j];
   }
  }
 }
   
 //写地图文件
 CFile mfile1(_T("D:\\Google-earth.html"),CFile::modeWrite);
 mfile1.Write(sRead,f_size);
 mfile1.Flush();
 mfile1.Close();
 //重新打开地图
 m_map.Navigate(_T("
);
 UpdateData(FALSE);
}
4、点击按钮2,切换到地图坐标点2
void Cgoogle_mapDlg::OnBnClickedButton2()
{
 // TODO: 在此添加控件通知处理程序代码、
 char sRead[10000];
 char new_pos[]="31.0326,113.7972";
 char s_search1='*';
 //读地图文件到缓冲区中
 CFile mfile(_T("D:\Google-earth.html"),CFile::modeRead);
 if (mfile.GetLength()<2)
 {
  return;
 }
 int f_size=mfile.GetLength();
 mfile.Read(sRead,f_size);
 mfile.Close();
 //修改缓冲区中的坐标数据
 for(int i=0;i {
  if (sRead[i]=='*')
  {
   m_length=i;
   //sRead[i+26+11]='4';
   for (int j=0;j<14;j++)
   {
    sRead[i+37+j]=new_pos[j];
   }
  }
 }
 //写地图文件
 CFile mfile1(_T("D:\\Google-earth.html"),CFile::modeWrite);
 mfile1.Write(sRead,f_size);
 mfile1.Flush();
 mfile1.Close();
 //重新打开地图
 m_map.Navigate(_T("
);
}
最后关于地图中可选择的一些基本的组件的使用说明
(1)比例尺组件、
 //add bi li chi
 var customUI = map.getDefaultUI();
 customUI.maptypes.hybrid = true;
 map.setUI(customUI);
2)指定坐标点的标记组件
 //add mark point
 var point = new GLatLng(31.0326,113.7972);
 map.addOverlay(new GMarker(point));
(3)其他嵌入图层(eg:维基百科)
 var myLayer = new GLayer("org.wikipedia.en");
 map.addOverlay(myLayer);
(4)消息提示框组件
 map.openInfoWindow(map.getCenter(),document.createTextNode("gu gong"));
(5)放大缩小组件
  map.addControl(new GLargeMapControl());
  //map.addControl(new GSmallMapControl());
上面的是两种大小的地图缩放组件,可任选其一。
(6)设置地图的中心点
 var map = new GMap2(document.getElementById("map_canvas"));//*
 map.setCenter(new GLatLng(31.0326,113.7972),14);
就讲这么多,其他的有待进一步的学习!
效果如如下:
上传exe文件如下:
上传地图文件如下:
下载后,先将后缀名改为7z然后解压。
阅读(9551) | 评论(9) | 转发(0) |
0

上一篇:涂鸦

下一篇:stm32时钟分析

给主人留下些什么吧!~~

Jack_wangzj2014-12-19 13:22:43

number007cool:这里面有换行    。具体情况 ,你可以尝试一下,就会得到结论的 。我这里的偏移量也是试出来的 ,一开始我也不知道是多少

嗯,好的。谢谢博主了

回复 | 举报

number007cool2014-12-17 21:43:42

Jack_wangzj:博主你好,你的文章写得很好。给与了刚入门的我很大的帮助,可我仔细看了一下程序,有两个小疑问想要提一下:“sRead[i+37+j]=new_pos[j];”这段程序里面,j取值从0到14,代表的应该是经纬度的总位数,可我数了一下“31.0326,113.7972”,加逗号和点号总共有16位,和14不一样。还有一个:“37”,代表的应该是星号*到纬度第一个数字之间的字数,我也数了一下,总共有26位,和37相差太大。倍感疑惑,所以来询问一下博主,希望博主能在百忙之中抽出空来回答我这浅薄的问题,不胜感激,谢谢博主了!

这里面有换行    。具体情况 ,你可以尝试一下,就会得到结论的 。我这里的偏移量也是试出来的 ,一开始我也不知道是多少

回复 | 举报

Jack_wangzj2014-12-17 20:34:57

博主你好,你的文章写得很好。给与了刚入门的我很大的帮助,可我仔细看了一下程序,有两个小疑问想要提一下:“sRead[i+37+j]=new_pos[j];”这段程序里面,j取值从0到14,代表的应该是经纬度的总位数,可我数了一下“31.0326,113.7972”,加逗号和点号总共有16位,和14不一样。还有一个:“37”,代表的应该是星号*到纬度第一个数字之间的字数,我也数了一下,总共有26位,和37相差太大。倍感疑惑,所以来询问一下博主,希望博主能在百忙之中抽出空来回答我这浅薄的问题,不胜感激,谢谢博主了!

奥丁@2014-03-18 11:01:16

exe的密码是多少?

number007cool2014-03-14 20:01:43

sesslight:你好,我参考你的自己编了一个,地图成功了,非常有帮助!!


可能是我html脚本不太会,
编那个点击按钮1切换到坐标点1区域时,那个m_length是什么变量,在哪声明的呢?
lz那个下载还能再传一个吗

m_length应该是’*‘字符相对于文件头的偏移,也就是从文件头道'*'字符间的字符数。

回复 | 举报