2017-05-02 13 views
0

JXMapViewer 소스 (link to github)의 기본 예제를 사용하여 대신 소스를 수정하여 wms 서버에서 타일을로드합니다. 그러나, Tilefactory는 URL이 정확하게 형성되었음을 나타내는 테스트에도 불구하고 올바르게 타일을로드하지 않습니다.JXMapViewer를 사용하는 WMS 레이어가로드되지 않습니다.

TileFactoryInfo info = new WMSTileFactoryInfo(0, 10, 11, "https://mesonet.agron.iastate.edu/cgi-bin/wms/us/mrms.cgi", "mrms_p48h"); 
    DefaultTileFactory tileFactory = new DefaultTileFactory(info); 
    mapViewer.setTileFactory(tileFactory); 

테스트 낳는 웹 브라우저에로드 할 수있는 정확하게 형성하는 URL :

제 타일
//Test: Created URLs work. 10 = max zoom 
    System.out.println(info.getTileUrl(0, 0, 10)); 
    System.out.println(info.getTileUrl(0, 1, 9)); 
    System.out.println(info.getTileUrl(1, 1, 9)); 

URL : https://mesonet.agron.iastate.edu/cgi-bin/wms/us/mrms.cgi?version=1.1.1&request=GetMap&layers=mrms_p48h&format=image/jpeg&bbox=-180.0,0.0,0.0,85.05112877980659&width=255&height=255&srs=EPSG:4326&styles=&bgcolor=0xAFDAF6

유일한 수정 부분이있다

그러나, 내가 간단한 JFrame (코드는 다른 중심 위치 인 Des Moins를 제외한 예제에서 변경되지 않았습니다. whi ch는 OSM에서 작동 함), 타일이로드되지 않습니다. 그래서 실수는 서버 응답입니다

import javax.swing.JFrame; 
import org.jxmapviewer.viewer.DefaultTileFactory; 
import org.jxmapviewer.viewer.GeoPosition; 
import org.jxmapviewer.JXMapViewer; 
import org.jxmapviewer.WMSTileFactoryInfo; 
import org.jxmapviewer.viewer.TileFactoryInfo; 

public class WMSTest {   
    public static void main(String[] args) { 
     JXMapViewer mapViewer = new JXMapViewer(); 

    // Create a TileFactoryInfo for WMS 
    //WMSTileFactoryInfo int minZoom, int maxZoom, int totalMapZoom, java.lang.String baseURL, java.lang.String layers) 
    TileFactoryInfo info = new WMSTileFactoryInfo(0, 10, 11, "https://mesonet.agron.iastate.edu/cgi-bin/wms/us/mrms.cgi", "mrms_p48h"); 

    //Test: Do created URLs work? 10 = max zoom, 9 = 1 level lower -> OK. 
    System.out.println(info.getTileUrl(0, 0, 10)); 
    System.out.println(info.getTileUrl(0, 1, 9)); 
    System.out.println(info.getTileUrl(1, 1, 9)); 

    DefaultTileFactory tileFactory = new DefaultTileFactory(info); 
    mapViewer.setTileFactory(tileFactory); 

    // Create a TileFactoryInfo for OpenStreetMap   
    //TileFactoryInfo info2 = new OSMTileFactoryInfo(); 
    //DefaultTileFactory tileFactory2 = new DefaultTileFactory(info2); 
    //mapViewer.setTileFactory(tileFactory2); 

    // Use 8 threads in parallel to load the tiles 
    tileFactory.setThreadPoolSize(8); 
    // Set the focus   
    GeoPosition desMoines = new GeoPosition(41.590833, -93.620833); 

    mapViewer.setZoom(9); 
    mapViewer.setAddressLocation(desMoines); 
    // Display the viewer in a JFrame   
    JFrame frame = new JFrame("JXMapviewer2 Example 1"); 
    frame.getContentPane().add(mapViewer); 
    frame.setSize(800, 600); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
} 
} 

답변

0

:

여기 내 테스트에 대한 전체 코드입니다.

<AccessConstraints>None</AccessConstraints> 

을 반환하지

?SERVICE=WMS&REQUEST=GetCapabilities 

를 사용하지만,이 서버가 어떤 소스 & APPID의 요청을 받아 들일 것입니다 의미하지 않는다. 나는 다른 공중 및 개인 wms 서버로 테스트하여 내 문제를 해결했으며 문제는 코드에 없었으며 일부 서버는 내 앱의 요청을 받아들이지 않습니다. 지식이있는 사람의 답변에 만족할 것입니다.하지만 그 동안에는 동일한 문제가있는 사람을 도울 수 있습니다.